Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1836to1840
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Mit Textbox suchen und Zelle markieren
07.07.2021 12:14:54
oraculix
Hallo
Ich suche ein VBA Makro
In der Tabelle habe ich eine Textbox.
Wenn ich in die Textbox einen Text eingebe soll im Bereich A2:GF300 danach mit der Enter Taste gesucht werden und die gefunden Zelle markiert werden. Wenn möglich hätte ich noch gern dazu bei Doppelten Einträgen das eine Msgbox kommt die mir Sagt in Welcher Spalte es noch doppelte Einträge gibt.
Hoffe es kann mir jemand Helfen!
https://www.herber.de/bbs/user/146997.xlsm
Gruß
Oraculix
kost fast nix

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Textbox suchen und Zelle markieren
07.07.2021 13:19:17
UweD
Hallo
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- rechts das hier reinkopieren

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'bei Return Makro ausführen
Dim TB As Worksheet, RNG As Range, C As Range, TTXT As String, firstAddress As String, Anz As Integer
Set TB = Sheets("Tabelle1")
Set RNG = TB.Range("A2:GF300")
With TextBox1
If .Text  "" Then
Set C = RNG.Find(.Text, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Application.Goto C ' ersten Fund markieren
Do
Set C = RNG.FindNext(C)
'Fundstellen sammeln
TTXT = TTXT & vbLf & C.Address(0, 0)
Anz = Anz + 1
Loop While Not C Is Nothing And C.Address  firstAddress
MsgBox Anz & "x gefunden in:" & vbLf & TTXT
Else
MsgBox "Kein Fund"
End If
End If
End With
End If
End Sub
LG UweD
Anzeige
AW: Mit Textbox suchen und Zelle markieren
07.07.2021 13:46:51
oraculix
Genial Funktioniert super Vielen Dank!!!
Noch ne frage wenn die Textbox erscheint mit mehreren treffern . Kann man das so programieren wenn man auf die Texbox klickt das er zu dieser Zelle springt?
AW: Mit Textbox suchen und Zelle markieren
07.07.2021 14:40:29
UweD
Hallo nochmal
eventuell so?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'bei Return Makro ausführen
Dim TB As Worksheet, RNG As Range, C As Range, TTXT As String, firstAddress As String
Dim Anz As Integer, JaNein As Variant, Arr, i As Integer
Set TB = Sheets("Tabelle1")
Set RNG = TB.Range("A2:GF300")
With TextBox1
If .Text  "" Then
Set C = RNG.Find(.Text, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
Set C = RNG.FindNext(C)
'Fundstellen sammeln
TTXT = TTXT & vbLf & C.Address(0, 0)
Anz = Anz + 1
Loop While Not C Is Nothing And C.Address  firstAddress
Arr = Split(TTXT, vbLf) 'Array zum Anspringen
For i = 1 To Anz
JaNein = MsgBox(Anz & "x gefunden in:" & vbLf & TTXT & vbLf & vbLf _
& "Zum Treffer " & i & " / " & Anz & " hinspringen?", vbYesNo)
If JaNein = vbYes Then
Application.Goto Range(Arr(i))
Else
Exit For
End If
Next
Else
MsgBox "Kein Fund"
End If
End If
End With
End If
End Sub
LG UweD
Anzeige
AW: Mit Textbox suchen und Zelle markieren
07.07.2021 14:53:01
oraculix
juhu super passt Danke genau so Vielen Dank!!!
Gruß
Oraculix
kost fast nix
Danke für die Rückmeldung (owT)
07.07.2021 15:00:50
UweD
AW: Danke für die Rückmeldung (owT)
07.07.2021 15:23:35
oraculix
ups beim herumprobieren endeckt das die Msgbox zu lang ist das man den abrechen Button nicht drücken kann. Bei 400 Treffern 400 mal Enter drücken. Kann man die Msgbox noch breiter machen so das der Abrechen Button immer Erreichbar ist?
AW: Danke für die Rückmeldung (owT)
07.07.2021 15:41:24
UweD

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'bei Return Makro ausführen
Dim TB As Worksheet, RNG As Range, C As Range, TTXT As String, firstAddress As String
Dim Anz As Integer, JaNein As Variant, Arr, i As Integer
Set TB = Sheets("Tabelle1")
Set RNG = TB.Range("A2:GF300")
With TextBox1
If .Text  "" Then
Set C = RNG.Find(.Text, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
Set C = RNG.FindNext(C)
'Fundstellen sammeln
TTXT = TTXT & "; " & C.Address(0, 0)
Anz = Anz + 1
Loop While Not C Is Nothing And C.Address  firstAddress
Arr = Split(TTXT, ", ") 'Array zum Anspringen
For i = 1 To Anz
JaNein = MsgBox(Anz & "x gefunden in:" & vbLf & TTXT & vbLf & vbLf _
& "Zum Treffer " & i & " / " & Anz & " hinspringen?", vbYesNo)
If JaNein = vbYes Then
Application.Goto Range(Arr(i))
Else
Exit For
End If
Next
Else
MsgBox "Kein Fund"
End If
End If
End With
End If
End Sub

Anzeige
nimm das anderen Posting
07.07.2021 15:53:45
UweD
AW: Danke für die Rückmeldung (owT)
07.07.2021 15:52:12
UweD
Hallo
bei mehr als 1024 Zeichen in einer MsgBox ist sowieso Schluss
Da wird der Rest verschluckt.
Die Buchstaben der Tastatur J und N werden aber auch akzepteiert
Evtl. so

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'bei Return Makro ausführen
Dim TB As Worksheet, RNG As Range, C As Range, TTXT As String, firstAddress As String
Dim Anz As Integer, JaNein As Variant, Arr, i As Integer
Set TB = Sheets("Tabelle1")
Set RNG = TB.Range("A2:GF300")
With TextBox1
If .Text  "" Then
Set C = RNG.Find(.Text, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
Set C = RNG.FindNext(C)
'Fundstellen sammeln
TTXT = TTXT & "; " & C.Address(0, 0)
Anz = Anz + 1
Loop While Not C Is Nothing And C.Address  firstAddress
Arr = Split(TTXT, "; ") 'Array zum Anspringen
For i = 1 To Anz
JaNein = MsgBox(Anz & "x gefunden in:" & vbLf & TTXT & vbLf & vbLf _
, vbYesNo, "Zum Treffer " & i & " / " & Anz & " hinspringen?   J / N")
If JaNein = vbYes Then
Application.Goto Range(Arr(i))
Else
Exit For
End If
Next
Else
MsgBox "Kein Fund"
End If
End If
End With
End If
End Sub
LG UweD
Anzeige
AW: Danke für die Rückmeldung (owT)
07.07.2021 16:11:55
oraculix
Danke das letzte ist genial und der Tipp mit dem beenden mit N auch.
So geht das jetzt schon Danke nochmal schönen Tag noch
Gruß
Oraculix
kost fast nix
Warum nicht das normale Suchen?
07.07.2021 15:41:24
Daniel
Hi
nutze doch die vorhandene SUCHEN-Menüfunktion von Excel.
Klicke dort einfach nach Eingabe des Textes auf "Alle suchen"
Dann erschient unterhalb des Such-Assistenten eine Liste, in der alle gefundenen Zellen aufgelistest sind, mit Mappe, Zelle und Zellwert.
Aus dieser Liste heraus kannst du auch die gefundenen Zellen selektieren.
Gruß Daniel
AW: Warum nicht das normale Suchen?
07.07.2021 17:06:44
oraculix
Danke für den Tip
Aber da findet er gar nix wenn ich was eingebe keine Ahnung warum?
Anzeige
AW: Warum nicht das normale Suchen?
07.07.2021 17:44:29
Daniel
Check mal die Einstellung in den Optionen (gesamten Zellinhalt vergleichen usw)
Beachte auch die Selektion der Zellen.
Du musst entweder alle Zellen, die durchsucht werden sollen markieren oder eine einzige Zelle.
Markierst du eine einzige Zelle, wird das ganze Blatt durchsucht, ansonsten nur die markierten Zellen.
Gruß Daniel
AW: Warum nicht das normale Suchen?
07.07.2021 18:11:03
oraculix
Ja Danke für die Tipps er findet nur sporadisch was wenn ich alles beachte was Du gepostet hast
In der VBA suche findet er alles also auch 400 Treffer
AW: Warum nicht das normale Suchen?
07.07.2021 18:38:26
Daniel
Ist das ein Mengenproblem?
Hast du mal ein konkretes Beispiel was er mit der Suche nicht findet, aber mit dem Makro?
Gruß Daniel
Anzeige
AW: Warum nicht das normale Suchen?
07.07.2021 18:50:44
Daniel
bei mir findet er auch mehrere 1000 Fundstellen und es lassen sich alle selektieren.
Gruß Daniel
AW: Warum nicht das normale Suchen?
07.07.2021 19:01:48
oraculix
Das liegt wahrscheinlich am Text von den Filmen
$5 a Day
...altrimenti ci arrabbiamo!
...Più forte ragazzi!
1 chance sur 2
2 Fast 2 Furious
2 Guns
3 Days to Kill
3 Idiots
3faltig
Alles als Text Formatiert
5 Flights Up
6 Souls
7 minutes
8 Mile
8 Million Ways to Die
8MM
10 Cloverfield Lane
10 Minutes Gone
10,000 BC
10x10
12 Angry Men
12 Rounds 2 Reloaded
12 Strong
12 Years a Slave
13 Going on 30
13 Hours
13 Stühle
15 Minutes
16 Blocks
20th Century Women
21 Bridges
21
21 Grams
22 Jump Street
24 Hours to Live
28 Days
30 Days of Night
42
47 Meters Down Uncaged
47 Ronin
71
127 Hours
211
300
300 Rise of an Empire
310 to Yuma
1408
1492 Conquest of Paradise
1917
2001 A Space Odyssey
2012
3000 Miles to Graceland
3096 Tage
5050
7500
10000 Saints
Anzeige
AW: Warum nicht das normale Suchen?
07.07.2021 19:09:16
Daniel
Hi
dann Haken bei "gesamten Zellinhalt vergleichen" nicht setzen oder Jokerzeichen verwenden, dh suche nach *Filmtiltel*
Gruß Daniel
AW: Warum nicht das normale Suchen?
07.07.2021 19:25:41
oraculix
Danke das war es der Haken bei gesamten Zellinhalt vergleichen.
Klingt zwar unlogisch aber egal Hauptsache es funktioniert.
Gruß
Oraculix
kost fast nix
AW: Warum nicht das normale Suchen?
07.07.2021 20:24:37
Daniel
Das selbe Problem müsstest du aber auch mit Uwes Makro haben, da er ebenfalls dieses SUCHEN anwendet.
Da er zu dieser Einstellung keine Angaben macht (es wäre der Parameter LookAt:=xlPart), wird die zuletzt vom Anwender gemachte Einstellung verwendet, so das es Zufall ist wie es funktioniert.
Gruß Daniel
Anzeige
AW: Warum nicht das normale Suchen?
07.07.2021 23:47:23
oraculix
Super du hast recht Danke habe es geändert!

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
'bei Return Makro ausführen
Dim TB As Worksheet, RNG As Range, C As Range, TTXT As String, firstAddress As String
Dim Anz As Integer, JaNein As Variant, Arr, i As Integer
Set TB = Sheets("Schauspieler")
Set RNG = TB.Range("A2:GF300")
With TextBox1
If .Text  "" Then
Set C = RNG.Find(.Text, LookAt:=xlPart) 'Hier ##########
If Not C Is Nothing Then
firstAddress = C.Address
Do
Set C = RNG.FindNext(C)
'Fundstellen sammeln
TTXT = TTXT & "; " & C.Address(0, 0)
Anz = Anz + 1
Loop While Not C Is Nothing And C.Address  firstAddress
Arr = Split(TTXT, "; ") 'Array zum Anspringen
For i = 1 To Anz
JaNein = MsgBox(Anz & "x gefunden in:" & vbLf & TTXT & vbLf & vbLf _
, vbYesNo, "Zum Treffer " & i & " / " & Anz & " hinspringen?   J / N")
If JaNein = vbYes Then
Application.Goto Range(Arr(i))
Else
Exit For
End If
Next
Else
MsgBox "Kein Fund"
End If
End If
End With
End If
End Sub

Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige