Office: ComboBox Autovervollständigung und Ergebnis in ListBox

Helfe beim Thema ComboBox Autovervollständigung und Ergebnis in ListBox in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Nabend, anbei eine Excelmappe mit Makro. Es enthält einige Module und eine Form. Wenn ihr auf dem zweiten Tabellenblatt die Form startet, seht ihr... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Tuereintreter, 1. Oktober 2019.

  1. ComboBox Autovervollständigung und Ergebnis in ListBox


    Nabend,

    anbei eine Excelmappe mit Makro. Es enthält einige Module und eine Form. Wenn ihr auf dem zweiten Tabellenblatt die Form startet, seht ihr unten zwei Listboxen. In der Linken werden die Artikelgruppen und in der Rechten die Artikel angezeigt. Das klappt alles ganz schön. Über der Artikel-Box ist eine Combobox als Suche. Autovervollständigen ist an. Wenn man nun Text tippt, dann wird unten die Artikelbox atualisiert live beim tippen. Ds soll auch so sein. Aber....

    Da Autovervollständigen nicht nur das Getippte, sondern auch den erst Besten Eintrag komplett. Da ich mit .Text auslese beim Change-Ereignis - wird auch der Ganze Text an die Variable übergeben. Und meine Suchroutine läuft so lange immer durch bis sie nix mehr findet und einen Fehler produziert. Nicht schlimm. Kann ich abfangen. Doch in der Listbox sollen ALLE Artikel die auf das vom Benutzer Getippte angezeigt und folglich langsam reduziert werden.
    Wenn es mir gelänge nur die Benutzereingabe an die Variable weiterzugeben, wäre das Problem wahrscheinlich gelöst.

    PS: Die Datei musste eindampfen, da sie sonst zu groß wurde

    Gruß
    Tuere

    :)
     
    Tuereintreter, 1. Oktober 2019
    #1
  2. Hallo,

    so ganz habe ich es nicht hinbekommen. Die Backspace-Taste funktioniert nicht zu 100%. Ich habe das Change-Event der Combobox raus genommen und dafür das KeyDown- und KeyPress-Event eingebaut:

    Option Explicit

    Private mstrText As String

    Private Sub cboArtikelsuche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Select Case KeyCode
    Case vbKeyBack
    If mstrText <> vbNullString Then
    mstrText = Left$(mstrText, Len(mstrText) - 1)
    cboArtikelsuche.Text = mstrText
    Call ListBox_Artikel_füllen(mstrText, "Libellé", 1)
    End If
    End Select
    End Sub

    Private Sub cboArtikelsuche_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 32, 48 To 57, 65 To 90, 97 To 122
    mstrText = mstrText + Chr$(KeyAscii)
    Call ListBox_Artikel_füllen(mstrText, "Libellé", 1)
    End Select
    End Sub


    Außerdem musste ich die Suchroutine ändern:

    Sub ListBox_Artikel_füllen(strSuchtext, strSuchspalte As String, Optional lngSuchart As Long)

    Dim varArtikelarr As Variant, varTypenarr As Variant, varTemp() As Variant
    Dim i As Long, lngSpalte As Long, Anzahl As Long, Counter As Long

    If frmCalcul.lboTypen.ListIndex = -1 Then Exit Sub
    varArtikelarr = [tblArtikel]
    lngSpalte = Clng(funSuche(strSuchspalte, 1, , , lngSuchart, , 1))

    For i = LBound(varArtikelarr, 1) To UBound(varArtikelarr, 1)
    If Left$(varArtikelarr(i, lngSpalte), Len(strSuchtext)) = strSuchtext Then Anzahl = Anzahl + 1
    Next

    If Anzahl > 0 Then

    Redim varTemp(0 To Anzahl - 1, 0 To 2)

    For i = 1 To UBound(varArtikelarr, 1)
    If Left$(varArtikelarr(i, lngSpalte), Len(strSuchtext)) = strSuchtext Then
    varTemp(Counter, 0) = varArtikelarr(i, 5)
    varTemp(Counter, 1) = varArtikelarr(i, 6)
    varTemp(Counter, 2) = varArtikelarr(i, 7)
    Counter = Counter + 1
    End If
    Next

    frmCalcul.lboArtikel.ColumnWidths = "380;50;50"
    frmCalcul.lboArtikel.List = varTemp

    End If
    End Sub


    Achja, wenn wir schon dabei sind,

    dass:

    Dim lngSpalte, i As Long

    ist falsch. du musst in VBA jede Variable separat deklarieren. Also so:

    Dim lngSpalte As Long, i As Long
     
    Nepumuk, 4. Oktober 2019
    #2
  3. Hi Nepumuk,

    ich darf mich hier mal recht herzlich bei dir bedanken für deine Mithilfe. Warum hakt überhaupt die Backspace-Taste ?
    Deine Anmerkung zur Einzeldeklaration ist mir NEU.
    Auf folgender Seite von M$ https://docs.microsoft.com/de-de/off.../dim-statement
    gibts Beispiele wo sie dies nicht einzeln tun. *entsetzt

    Ich habe das Ganze aber anders angegangen und habe meine Lösung hier angehängt. Die Combo musste ner Text weichen. Einen Resetbutton gibts auch jetzt und die Zurücktaste funzt auch.

    Trotzdem danke.
    Schönen Abend noch Nepu.
     
    Tuereintreter, 4. Oktober 2019
    #3
  4. ComboBox Autovervollständigung und Ergebnis in ListBox

    Hallo,

    Dim-Anweisung ohne Angabe des Datentyps erzeugen immer ein Variant-Variable.
     
    Nepumuk, 4. Oktober 2019
    #4
  5. Du solltest auch die Dokumentation in den Beispielen lesen...*wink.gif*

    Und auf Deutsch steht's etwas weiter oben auch nochmal...

     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Scorefun, 4. Oktober 2019
    #5
  6. \@ ALL
    Es gibt in der Hilfe von M$ genügend Beispiele, die dann wahrscheinlich aus VBasic stammen, die nur einmal pro Zeile deklarieren. Und wie man den Garbage Collector benutzt weiß ich wohl. Diese Feinheiten mache ich normalerweise am Ende eines Programmes. Ich habe es hier mal schon getan da es ja, genauso wie mein spärliches With-End with, für Anstoß gesorgt hat. Und ja das mit der Einzeldeklarierung wusste ich so nicht - bis jetzt.

    OnTopic
    @Nepomuk
    Anbei nochmal die Mappe. Was denkst du wie ich es Anstellen kann, die Suche so umzugestalten, dass ich zum Beispiel in der Suchzeile "c12/15" tippe und dann mit "f2" weiterfahre und er mir alle Suchergebnisse ohne "f2" rauswirft ?
    Geht das überhaupt ?
    Wäre jetzt kein muss. Bei diversen Suchmaschinen kann man da ja mit Operatoren fahren. Das wollte ich mir eigentlich sparen.

    Gruß
    Tuere
     
    Tuereintreter, 5. Oktober 2019
    #7
  7. ComboBox Autovervollständigung und Ergebnis in ListBox

    Wie benutzt man denn den Garbage Collector in VBA?
     
  8. Hallo,

    was soll denn bei "c12/15" gefunden werden? Gib mir ein paar Beispiele.
     
    Nepumuk, 5. Oktober 2019
    #9
  9. Na gib mal in der letzten Mappe c12/15 ein in das Suchfeld. Dann aktualisiert sich die Liste darunter auf so etwa 6 Einträge. Du wirst erkennen, dass es da F1, F2 usw. noch gibt. Das folgt aber nicht direkt nach f12/15 im String, weshalb auch eine Eingabe von f12/15 f2 das gleiche Ergebnis fördert wie f12/15 allein. Ziel ist es z. B. zu sagen ich brauche einen Schachtring mit 1 m Durchmesser und das so da einzugeben und auch zu finden.
     
    Tuereintreter, 5. Oktober 2019
    #10
  10. Hallo,

    so besser?

    Sub ListBox_Artikel_füllen(strSuchtext, strSuchspalte As String, Optional lngSuchart As Long)

    Dim varArtikelarr As Variant, varTypenarr As Variant, varTemp() As Variant
    Dim i As Long, lngSpalte As Long, Anzahl As Long, Counter As Long
    Dim frm As UserForm

    Set frm = frmCalcul

    With frm

    If .lboTypen.ListIndex = -1 Then Exit Sub
    .lboArtikel.Clear 'neu ********************
    varArtikelarr = [tblArtikel]
    lngSpalte = Clng(funSuche(strSuchspalte, 1, , , lngSuchart, , 1))

    For i = LBound(varArtikelarr, 1) To UBound(varArtikelarr, 1)
    If InStr(1, varArtikelarr(i, lngSpalte), strSuchtext, vbTextCompare) <> 0 Then Anzahl = Anzahl + 1
    Next

    If Anzahl > 0 Then

    Redim varTemp(0 To Anzahl - 1, 0 To 2)

    For i = 1 To UBound(varArtikelarr, 1)
    If InStr(1, varArtikelarr(i, lngSpalte), strSuchtext, vbTextCompare) <> 0 Then
    varTemp(Counter, 0) = varArtikelarr(i, 5)
    varTemp(Counter, 1) = varArtikelarr(i, 6)
    varTemp(Counter, 2) = varArtikelarr(i, 7)
    Counter = Counter + 1
    End If
    Next

    .lboArtikel.ColumnWidths = "380;45;45"
    .lboArtikel.List = varTemp

    End If

    End With

    Set frm = Nothing

    End Sub
     
    Nepumuk, 6. Oktober 2019
    #11
  11. Salut Nepumuk,

    die Zeile mit .Clear löscht den Inhalt der ListBox - klar. Am Ende der Prozedur überschreibe ich aber aus dem aufbereitetem Array heraus den Inhalt der ListBox komplett. Kommt nicht das Selbe bei rum ?
     
    Tuereintreter, 7. Oktober 2019
    #12
  12. ComboBox Autovervollständigung und Ergebnis in ListBox

    Hallo,

    wenn nichts gefunden wird, wird auch nichts angezeigt.
     
    Nepumuk, 7. Oktober 2019
    #13
Thema:

ComboBox Autovervollständigung und Ergebnis in ListBox

Die Seite wird geladen...
  1. ComboBox Autovervollständigung und Ergebnis in ListBox - Similar Threads - ComboBox Autovervollständigung Ergebnis

  2. Auswahl über Combobox dann Werte kopieren

    in Microsoft Excel Hilfe
    Auswahl über Combobox dann Werte kopieren: Hallo in die Runde, Für euch VBA Profis ist die Lösung dieser Problematik nur ein Klacks, mir als Anfänger bringt es nur graue Haare. In der Tabelle Lager stehen in der Spalte A alle vorhandenen...
  3. Textbox aus Combobox nach Änderung befüllen

    in Microsoft Excel Hilfe
    Textbox aus Combobox nach Änderung befüllen: Hallo zusammen Ich habe ein Problem mit dem automatischen befüllen der Textbox. Sobald ich das von mir Fett markierte aktiviere, bekomme ich den Fehler "Die XLookup Eigenschaft des...
  4. Combobox immer wenigere Daten anzeigen

    in Microsoft Excel Hilfe
    Combobox immer wenigere Daten anzeigen: Hallo zusammen, ich bin's mal wieder. Folgende Problematik: ich befülle eine Combobox mit gefilterten Daten. (ZählerNr vom Vorjahr) z.B ZählerNr 1-10 Zählerstände zum 31.12.21 Wenn ich nun die...
  5. wert aus ComboBox prüfen dann hinzufügen

    in Microsoft Excel Hilfe
    wert aus ComboBox prüfen dann hinzufügen: Gutn Morgen zusammen, mit folgendem Code fülle ich meine ComboBox Private Sub UserForm_initialize() With ComboBox1 For Repeatings = 2 To...
  6. ComboBox zeigt Inhalt nicht mehr an

    in Microsoft Excel Hilfe
    ComboBox zeigt Inhalt nicht mehr an: Guten Morgen, nachdem ich gestern hier an anderer Stelle eine Frage eingestellt hatte, gab man mir den Tipp von der Verwendung mehrerer UserFormen Abstand zu nehmen. Das habe ich mir zu Herzen...
  7. Userform Textfeld füllen abhängig von Wert aus Combobox

    in Microsoft Excel Hilfe
    Userform Textfeld füllen abhängig von Wert aus Combobox: Hallo zusammen, weiter geht es mit Problemen. Ich Filter die Daten für die Combobox mit diesem Code Private Sub UserForm_Initialize() Dim tbl As ListObject Dim rng As Range Dim cell As Range Dim...
  8. Autovervollständigung ComboBox

    in Microsoft Excel Hilfe
    Autovervollständigung ComboBox: Guten Morgen in die Runde, ich habe mir eine Userform gebastelt, die mit einer ComboBox ausgestattet ist. Diese zeigt mir alle Vorschläge aus Spalte 2 an. "Theo Bald, "Theo Lingen" usw. Gibt es...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden