Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1632to1636
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
UserForm Warenein-/ausgang - Volltextsuche
13.07.2018 14:34:18
Christian
Hallo zusammen,
ich habe mich an meinem ersten UserForm für einen Kollegen aus dem Lager versucht. Ich bin soweit auch ziemlich zufrieden, leider kriege ich den nachfolgenden Punkt nicht hin und benötige dafür Hilfe. Wäre super, wenn jemand sich der Sache annimmt :-).
Es geht um:
- Eine ComboBox mit Material-Art#
- Eine TextBox in der man die Material-Bezeichnung eingeben kann
- Eine ListBox die alle Materialien aus einer Datenbank auflistet und per Klick in die TextBox übernimmt
Ich möchte nun Folgendes erreichen:
- Die TextBox soll als Volltextsuche funktioniert, Suchbereich ist ListBox, welche die Infos von der Datenbank zieht.
Das bedeutet wenn ich nach "hris" in der TextBox suche soll in der Listbox nur noch bspw. "Chris", "Christian", "Christine" angezeigt werden.
- Die Daten der Listbox sollen alphabetisch geordnet dargestellt werden
Eine Beispieldatei ist hier verfügbar:
https://www.herber.de/bbs/user/122659.xlsm
Viele Grüße,
Christian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm Warenein-/ausgang - Volltextsuche
13.07.2018 17:33:29
Christian
Hallo zusammen,
ich habe jetzt noch ein Bild gemacht um einen besseren Einblick zu geben, auch weil ich aufgrund der Thematik ein .xlsm hochladen musste und das hier natürlich nicht sehr beliebt ist.
Userbild
Ich hoffe das hilft :-)
Schönes Wochenende!
Viele Grüße,
Christian
AW: UserForm Warenein-/ausgang - Volltextsuche
13.07.2018 22:29:03
Ramses
Hallo Christian
Nimm den Code in das Exit-Ereignis deiner Textbox. Hab das in einer anderen Anwendung und nur kopiert.
Wenn du Fragen hast, gerne.
Private Sub txtSuchbegriff_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Long, n As Long, lastRow As Long
Dim myArr As Variant, mediText As String, searchWKS As Worksheet
'txtSuchbegriff ist der Name deiner Textbox
If Me.txtSuchbegriff = "" Then
MsgBox "Kein Suchbegriff eingegeben", vbOKOnly + vbInformation, "Fehler"
Exit Sub
End If
Set searchWKS = Worksheets("Deine Datentabelle")
With searchWKS
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
With Me
'Es wird ein Array angelegt, um die gefunden Daten dort hineinzuschreiben
ReDim myArr(lastRow, 2)
n = 0
'1 = die erste Zeile deines Datenstammes
For i = 1 To lastRow
Debug.Print searchWKS.Cells(i, 1).Value
If InStr(1, searchWKS.Cells(i, 1).Value, UCase(.txtSuchbegriff)) > 0 Then
myArr(n, 0) = searchWKS.Cells(i, 1).Value
myArr(n, 1) = searchWKS.Cells(i, 1).Address
n = n + 1
'Debug.Print searchWKS.Cells(i, 1).Address
End If
Next i
'ReDim Preserve myArr(n, 2)
'Der Inhalt des Arrays wird in deine Listbox geschrieben mit der Zelladresse.
.lstErgebnis.List = myArr
.lblResult.Visible = True
End With
End With
Set searchWKS = Nothing
End Sub
Gruss Rainer
Anzeige
AW: UserForm Warenein-/ausgang - Volltextsuche
13.07.2018 23:31:58
Christian
Hallo Rainer,
danke für deine Hilfe!
So ganz klappt es nicht bei mir hin, glaube das liegt an den beiden nachfolgenden Zeilen, die ich nicht so wirklich deuten kann. Eine davon ist die ListBox-Bez. und die Andere?
"lstErgebnis" wird als Methoden und Objektfehler deklariert.
  • .lstErgebnis.List = myArr
    .lblResult.Visible = True

  • Habe zufälligerweise gerade noch was gefunden, nachdem ich wirklich Stunden mit der Recherche verbracht habe.
    Ich hoffe es ist nicht unverschämt dich bei diesem Code um Hilfe zu bitten, der funktioniert soweit fast perfekt.
    Ich bräuchte nur noch dieses Feature mit dem Platzhalter vorne, dass ich nicht "gezwungen" bin den Anfangsbuchstaben einzugeben.
    Und die Leerzeilen in der Listbox stören mich noch. Die entstehen durch eine Formel in der Datenbank, welche "" ausgibt. Die Daten in der Datenbank sind nämlich keine manuellen Eingaben sondern durch Formeln erzeugt.
    Diese "" müsste man deswegen noch ausgrenzen, aber wie :-S.
    Wäre sehr dankbar wenn man mir bei diesen 2 Punkten ggf. noch helfen könnte.
    Hier der Code:
  • 
    Private Sub TextBox_Bezeichnung_Change()
    Dim i As Long
    Dim a As Long
    Me.TextBox_Bezeichnung.Text = StrConv(Me.TextBox_Bezeichnung.Text, vbProperCase)
    Me.ListBox_Auswahl.Clear
    a = Len(Me.TextBox_Bezeichnung.Text)
    For i = 2 To Application.WorksheetFunction.CountA(Tabelle1.Range("B:B"))
    If Left(Tabelle1.Cells(i, 2).Value, a) = Left(Me.TextBox_Bezeichnung.Text, a) Then
    Me.ListBox_Auswahl.AddItem Tabelle1.Cells(i, 2).Value
    'Me.ListBox_Auswahl.List(ListBox_Auswahl.ListCount - 1, 2) = Tabelle1.Cells(i, 1).Value
    End If
    Next i
    End Sub
    

  • Viele Grüße,
    Christian
    Anzeige
    AW: UserForm Warenein-/ausgang - Volltextsuche
    13.07.2018 23:52:26
    Ramses
    Hallo
    "lstErgebnis" ist der Name deiner Listbox. Den musst du natürlich anpassen.
    Dann gibt es auch keine Leerzeilen :-)
    Gruss Rainer
    AW: UserForm Warenein-/ausgang - Volltextsuche
    13.07.2018 23:02:04
    Matthias
    Moin!
    Anbei mal derCode der UF zurück. Habe dir für die Suche einen Button daneben gelegt. Ansonsten ist das nervig, da bei Tippen ja schon bei jedem Buchstaben der Code anspringt. Wenn so gewollt, den Code dort reinkopieren und anpassen (da die unwichtigen Werte gelöscht werden, müsste die LIste erst wieder beefüllt werden - alternativ eine unvisible Liste mit auf die UF und dort die .list drin speichern).
    Bzgl. des Sortierens lese ich die Daten beim Initialize schon sortiert ein.
    EInfach mal anschauen.
    Private Sub ComboBox_Nummer_Change()
    End Sub
    Private Sub CommandButton_Abbrechen_Click()
    Unload UserForm1
    End Sub
    Private Sub CommandButton_Übernehmen_Click()
    Dim lastC As Long
    Dim shD As String
    If TextBox_LS.Value = "" Then
    MsgBox "Bitte geben Sie eine Lieferschein-Nr. ein!", _
    vbExclamation, "Hinweis"
    TextBox_LS.SetFocus
    Exit Sub
    End If
    If ComboBox_Standort.ListIndex 

    VG
    Anzeige
    AW: UserForm Warenein-/ausgang - Volltextsuche
    13.07.2018 23:58:12
    Christian
    Hi Matthias,
    Wow, du hast ja an alles gedacht :-O!
    Vielen, vielen Dank!
    Genau, das mit dem Change_Event war bewusst, aber auch hier Danke für's Mitdenken!
    Eine Sache ist mir aufgefallen, wenn ich praktisch einmal diese Suche gestartet habe und die Ergebnisse gefiltert wurden, kann ich, auch wenn ich den Text wieder lösche, nicht wieder zum Ursprung zurück, dass ich quasi die komplette Liste wieder in der ListBox angezeigt bekomme.
    Hast du da noch einen Tipp?
    Bin wirklich immer wieder überrascht, wie viele hilfsbereite Profis es hier gibt. Danke an der Stelle auch nochmals an Rainer.
    Gute Nacht und viele Grüße,
    Christian
    Anzeige
    AW: UserForm Warenein-/ausgang - Volltextsuche
    14.07.2018 12:38:34
    Matthias
    Moin!
    Also hier mal deine Datei zurück (ging gestern Abend nicht).
    https://www.herber.de/bbs/user/122674.xls
    Nicht wundern, ist eine xls - musste sie konvertieren, da ich noch Ex03 habe.
    Wie gestern geschrieben habe ich mal eine unsichtbare zweite LIstbox angelegt und speichere dort deinen "Datenbank" zwischen. Wenn du deine Auswahlistbox zurücksetzt, wird die Liste von dort genommen. Man könnte sie aber wie beim initialize auch wieder neu einlesen (damit hätte man dann auch neuere Datensätze mit dabei.
    Bei der Suche wird nur das Vorkommen im String gesucht. Groß- und Kleinschreibung wird beachtet. Falls du bei der Eingabe von hri sowohl Christian als auch CHRISTIAN haben, dann so wie beim Code von Rames mit UCASE arbeiten.
    VG
    Anzeige
    AW: UserForm Warenein-/ausgang - Volltextsuche
    14.07.2018 22:38:45
    Christian
    Hallo Matthias,
    danke dir für deine Hilfe, auch für deine Erklärung und Anmerkungen!
    Es klappt so jetzt echt sehr gut. Mit der Art wie es filtert bin ich ebenfalls sehr zufrieden.
    Ich als Anfänger finde das echt ziemlich komplex, dabei ist es doch ein eher simples UF ^^...
    Eine Kleinigkeit habe ich noch, falls du noch Lust hast :-):
    Für den Anwendungsbereich ist es tatsächlich praktischer wenn dieses Filtern direkt beim Change der TextBox aktiviert wird. Hab den Code vom Filtern-CommandButton also in "TextBox Change-Sub" rein.
    Jetzt benötige ich dieses Zurücksetzen nur noch zusätzlich als If-Bedingung.
    Quasi: "Wenn sich die Anzahl der eingegebenen Buchstaben ändert - bspw. von "hris" auf "hri" - dann soll es Me.ListBox_Auswahl.List = Me.ListBox1.List (die unsichtbare LB)´aktivieren."
    Das müsste doch so klappen oder stehe ich auf dem Schlauch?
    Gute Nacht erstmal!
    Viele Grüße,
    Christian
    Anzeige
    AW: UserForm Warenein-/ausgang - Volltextsuche
    15.07.2018 19:50:56
    Matthias
    Moin!
    Hier mal geändert. Jetzt springt das Change wieder an. Wie schon mal geschrieben, Groß- und Kleinschreibung wird unterschieden.
    https://www.herber.de/bbs/user/122687.xls
    VG
    AW: UserForm Warenein-/ausgang - Volltextsuche
    16.07.2018 13:40:21
    Christian
    Hi Matthias,
    perfekt, genauso habe ich mir das vorgestellt!
    Echt nochmals explizit vielen Dank für deine Geduld und deine Hilfsbereitschaft!
    Viele Grüße,
    Christian

    301 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige