Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit Textbox suchen und Zelle markieren

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
Anzeige

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?
Anzeige
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
Anzeige
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?
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
Anzeige
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
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
Anzeige
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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mit Textbox in Excel suchen und Zelle markieren


Schritt-für-Schritt-Anleitung

Um ein VBA-Makro zu erstellen, das eine Textbox in Excel nutzt, um in einem bestimmten Bereich zu suchen und die gefundenen Zellen zu markieren, folge diesen Schritten:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem du die Textbox erstellen möchtest.
  2. Klicke mit der rechten Maustaste auf den Tabellenblattreiter und wähle „Code anzeigen“.
  3. Füge den folgenden VBA-Code in das Codefenster ein:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    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)
                    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
  1. Schließe das VBA-Fenster und teste das Makro, indem du in die Textbox einen Suchbegriff eingibst und die Enter-Taste drückst.

Häufige Fehler und Lösungen

  1. Kein Fund gefunden: Überprüfe, ob der Suchbereich korrekt definiert ist (A2:GF300) und ob die Eingabewerte korrekt sind.
  2. Textbox nicht auffindbar: Stelle sicher, dass du eine Textbox im Entwicklermodus hinzugefügt hast.
  3. VBA-Code nicht ausführbar: Aktiviere Makros in deinen Excel-Einstellungen.

Alternative Methoden

Falls du kein VBA nutzen möchtest, kannst du auch die integrierte Suchfunktion von Excel verwenden:

  1. Drücke Strg + F, um das Suchfenster zu öffnen.
  2. Gib den Suchbegriff ein und klicke auf „Alle suchen“.
  3. Die gefundenen Zellen werden aufgelistet, und du kannst diese direkt auswählen.

Praktische Beispiele

  • Beispiel für die Suche nach einem bestimmten Namen: Wenn du nach „Mustermann“ suchst, wird das Makro alle Zellen im Bereich A2:GF300 durchsuchen und alle Funde in einer MsgBox auflisten.
  • Doppelte Einträge: Das Makro kann so angepasst werden, dass es eine MsgBox anzeigt, wenn doppelte Einträge gefunden werden. Verwende den folgenden Code-Snippet:
If Anz > 1 Then
    MsgBox "Doppelte Einträge gefunden in: " & TTXT
End If

Tipps für Profis

  • Suchparameter anpassen: Experimentiere mit den Suchparametern wie LookAt:=xlPart, um nur Teile der Zelleninhalte zu vergleichen.
  • Schaltflächen erstellen: Du kannst Schaltflächen in Excel hinzufügen, die das Makro ausführen, anstatt die Textbox zu verwenden.
  • Filtern von Ergebnissen: Implementiere zusätzliche Logik, um nur bestimmte Typen von Einträgen zu zählen oder anzuzeigen, z.B. nur Zahlen oder bestimmte Texte.

FAQ: Häufige Fragen

1. Wie kann ich die Textbox anpassen?
Du kannst die Größe und das Design der Textbox im Entwicklermodus anpassen.

2. Was mache ich, wenn ich viele Treffer finde?
Verwende eine Schleife, um die Ergebnisse in einem Array zu speichern und dann eine Auswahl zu ermöglichen, um zu den Treffer zu springen.

3. Warum findet die Excel-Suchfunktion nichts?
Stelle sicher, dass die Einstellung „Gesamten Zellinhalt vergleichen“ deaktiviert ist, da dies die Suche einschränken kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige