Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Suchfunktion in Userform

VBA: Suchfunktion in Userform
15.03.2017 13:35:08
Fresendelf
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte in einer Userform eine Suchmaske einbauen.
Funktion wie folgt: In einem Textfeld steht ein Text, bei klick auf "Suche" soll der Inhalt des Textfeldes in die Zwischenablage kopiert werden. Dann soll in einer Spalte nach diesem Text gesucht und die entsprechende Zeile markiert werden und die userForm soll wieder gestartet werden.
Im Prinzip habe ich auch alles - bis auf das Problem, dass ich es nicht schaffe, nach dem _
variablen Zelleninhalt zu suchen. Bislang sucht er nur nach dem vordefiniertem Text. Wo liegt _
der Fehler bzw. wie bekomme ich das hin?

Private Sub CommandButton26_Click()
'Inhalt der Textbox TB_TicketID in Zwischenablage kopieren und UserForm beenden
Set doInhalt = New DataObject
doInhalt.SetText TB_TICKETID.text
doInhalt.PutInClipboard
Me.Hide
'Suche nach der Zelle, in der der Text aus der Zwischenablage steht
Dim zelle As Range
For Each zelle In ActiveSheet.Range("C3:C4000").Cells
If zelle.text = "IM55217731" Then
zelle.Activate
Exit For
End If
Next
'UserForm starten
Unload DC_Ansicht2
DC_Ansicht2.Show
Call UserForm_Initialize
End Sub

Ich freue mich über Hilfe!! :)
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Suchfunktion in Userform
15.03.2017 14:07:15
Werner
Hallo,
wesshalb über die Zwischenablage?
Hier der Code mit Suche über eine Textbox auf einer Userform, miitels .Find
Private Sub CommandButton26_Click()
Dim rngTreffer As Range
Dim strSuchbegriff As String
strSuchbegriff = Me.TB_TICKETID.Value
Set rngTreffer = ActiveWorkbook.ActiveSheet.Columns(3).Find(strSuchbegriff, LookIn:=xlValues,  _
Lookat:= _
xlWhole)
If Me.TB_TICKETID = "" Then Unload Me
If Not rngTreffer Is Nothing Then
rngTreffer.Select
Unload Me
Else
MsgBox "Suchbegriff " & strSuchbegriff & " nicht gefunden."
End If
End Sub

Warum du die Userform mit .Hide ausblendest dann die UserForm schließt um sie erneut zu öffnen, weißt nur du und müsstest das ggf. noch einbauen.
Hier dann noch ein Code für eine Suche über eine InputBox. Einfach einen Button auf dein Tabellenblatt und dem Button das Makro zuweisen. Das Makro gehört in ein allgemeines Modul.
Public Sub Suchen()
Dim rngTreffer As Range
Dim strSuchbegriff As String
strSuchbegriff = InputBox("Bitte Suchbegriff eingeben", "Suchen")
Set rngTreffer = ActiveWorkbook.ActiveSheet.Columns(3).Find(strSuchbegriff, LookIn:=xlValues,  _
Lookat:= _
xlWhole)
If strSuchbegriff = vbNullString Then Exit Sub
If Not rngTreffer Is Nothing Then
rngTreffer.Select
Else
MsgBox "Suchbegriff " & strSuchbegriff & " nicht gefunden."
End If
End Sub
Gruß Werner
Anzeige
AW: VBA: Suchfunktion in Userform
15.03.2017 14:35:12
Fresendelf
Wow, herzlichen Dank. Es funktioniert!
Ich stehe VBA-technisch noch recht nah am Anfang, daher war es eine bloße Überlegung von mir, den Text in die Zwischenablage zu kopieren um anschließend danach zu suchen. Das ganze habe ich über VBA-Aufzeichnung gemacht, daher der unprofessionelle Charakter. ;)
Noch zum weiteren Verständnis: Die geöffnete UserForm ist eine View auf den Datensatz in der aktuellen Zeile. Es gibt Buttons, um vor und zurück zu blättern, aber keinen Button, um nach einer bestimmten Nummer der Datensätze zu suchen. Diesen habe ich nun eingefügt. D.h. ich gebe in der UserForm die Nummer ein, klicke auf den Suchbutton, schließe dann die UserForm, suche die entsprechende Zeile und starte die UserForm wieder.
Tausend Dank auf jeden Fall für die Hilfe! Mittlerweile ist aus meiner View schon eine kleine Anwendung geworden, die jetzt endlich auch über eine Suchfunktion verfügt! :)
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
15.03.2017 14:36:49
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Suchfunktion in einer Userform mit VBA


Schritt-für-Schritt-Anleitung

Um eine Suchfunktion in einer Userform mit Excel VBA zu erstellen, folge diesen Schritten:

  1. UserForm erstellen: Öffne den Visual Basic for Applications (VBA) Editor und füge eine neue UserForm hinzu.

  2. TextBox hinzufügen: Füge ein Textfeld (TextBox) hinzu, in das der Benutzer den Suchbegriff eingeben kann. Nenne es etwa TB_TICKETID.

  3. Button hinzufügen: Füge einen Button (CommandButton) hinzu und nenne ihn beispielsweise btnSearch. Dieser Button wird die Suche auslösen.

  4. VBA-Code einfügen: Klicke mit der rechten Maustaste auf den Button und wähle „Code anzeigen“. Füge den folgenden Code ein:

    Private Sub btnSearch_Click()
       Dim rngTreffer As Range
       Dim strSuchbegriff As String
       strSuchbegriff = Me.TB_TICKETID.Value
    
       Set rngTreffer = ActiveWorkbook.ActiveSheet.Columns(3).Find(strSuchbegriff, LookIn:=xlValues, Lookat:=xlWhole)
    
       If strSuchbegriff = "" Then
           Unload Me
       ElseIf Not rngTreffer Is Nothing Then
           rngTreffer.Select
           Unload Me
       Else
           MsgBox "Suchbegriff " & strSuchbegriff & " nicht gefunden."
       End If
    End Sub
  5. UserForm testen: Starte die UserForm und gib einen Wert in das Textfeld ein, um die Suchfunktion zu testen.


Häufige Fehler und Lösungen

  • Fehler: Die UserForm schließt sich sofort nach der Eingabe.

    • Lösung: Stelle sicher, dass Du die Eingabe überprüfst, bevor Du die UserForm schließt. Verwende If strSuchbegriff = "" Then um dies zu vermeiden.
  • Fehler: Der Suchbegriff wird nicht gefunden, obwohl er in der Tabelle vorhanden ist.

    • Lösung: Überprüfe, ob die gesuchte Spalte (hier Spalte C) korrekt definiert ist und ob der Suchbegriff exakt übereinstimmt.

Alternative Methoden

Eine Alternative zur UserForm ist die Verwendung einer InputBox. Hier ist ein Beispiel, wie Du diese Methode umsetzen kannst:

Public Sub Suchen()
    Dim rngTreffer As Range
    Dim strSuchbegriff As String
    strSuchbegriff = InputBox("Bitte Suchbegriff eingeben", "Suchen")

    Set rngTreffer = ActiveWorkbook.ActiveSheet.Columns(3).Find(strSuchbegriff, LookIn:=xlValues, Lookat:=xlWhole)

    If strSuchbegriff = vbNullString Then Exit Sub

    If Not rngTreffer Is Nothing Then
        rngTreffer.Select
    Else
        MsgBox "Suchbegriff " & strSuchbegriff & " nicht gefunden."
    End If
End Sub

Hierbei wird der Suchbegriff direkt über ein Dialogfenster eingegeben, was die Interaktion vereinfacht.


Praktische Beispiele

  1. Suche nach Ticketnummern: Du kannst die UserForm so anpassen, dass sie spezifisch nach Ticketnummern sucht. Wähle dazu die Spalte aus, in der die Ticketnummern stehen.

  2. Erweiterte Suchfunktionen: Füge zusätzliche Optionen hinzu, wie z.B. die Möglichkeit, nach Teilbegriffen oder in mehreren Spalten zu suchen.


Tipps für Profis

  • Nutze die .Find-Methode anstelle der Zwischenablage, um die Suche effizienter zu gestalten.
  • Implementiere eine Suchmaske in Excel, um den Benutzern eine intuitivere Benutzeroberfläche zu bieten.
  • Erstelle eine VBA Suchfunktion, die auf mehrere Spalten zugreift, um umfassendere Suchergebnisse zu erzielen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Suchfeld noch benutzerfreundlicher gestalten?
Du kannst zusätzliche Eingabeüberprüfungen oder Platzhaltertexte in der TextBox verwenden, um den Benutzern Hinweise zu geben.

2. Frage
Was kann ich tun, wenn ich mehrere Suchkriterien habe?
Erwäge, die UserForm so zu gestalten, dass mehrere TextBoxen für verschiedene Suchkriterien vorhanden sind, oder verwende Kontrollkästchen für verschiedene Filteroptionen.

3. Frage
Wie kann ich die Suchfunktion schneller machen?
Optimiere den Bereich, in dem die Suche stattfindet, indem Du nur die benötigten Zellen anstelle der gesamten Spalte durchsucht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige