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

in Listbox Einträge suchen und markieren

Forumthread: in Listbox Einträge suchen und markieren

in Listbox Einträge suchen und markieren
30.01.2015 23:12:29
Tom
Hallo allerseits,
ich bin gerade dabei, eine zu gross gewordene Adressliste mit Suchoptionen auszustatten. Eine in einer Userform integrierte Listbox die alle Adressen listet, soll via TextBox und Button nach Daten durchsucht werden. Das habe ich auch hingekrigt, doch leider kann ich nur die 1. Spalte durchsuchen. Es sollten aber alle 10 Spalten durchsucht werden. Da stehe ich nun an :-(
Private Sub CommandButton1_Click()
Dim i As Integer
Dim sText As String
sText = TextBox1.Text
For i = 1 To lstAdressen.ListCount - 1
If lstAdressen.List(i) = sText Then
Me!lstAdressen.Selected(i) = True
End If
Next i
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in Listbox Einträge suchen und markieren
31.01.2015 00:37:15
ludmila
Hallo Tom,
versuchs mal so!
Private Sub CommandButton1_Click()
Dim iRow As Integer
Dim iCol As Integer
For iRow = 0 To lstAdressen.ListCount - 1
For iCol = 0 To lstAdressen.ColumnCount - 1
If lstAdressen.List(iRow, iCol) = Textbox1.Text Then
lstAdressen.Selected(iRow) = True
End If
Next iCol
Next iRow
End Sub

Gruß
Ludmila

Anzeige
AW: in Listbox Einträge suchen und markieren
31.01.2015 01:27:47
Tom
Hallo Ludmila,
vielen Dank für die prompte Antwort. Leider bekomme ich in folgender Zeile einen Fehler.
If lstAdressen.List(iRow, iCol) = TextBox1.Text Then

AW: in Listbox Einträge suchen und markieren
31.01.2015 02:21:51
ludmila
Hy Tom,
bei mir funkioniert es
LG
Ludmila
https://www.herber.de/bbs/user/95439.xlsm

Anzeige
AW: in Listbox Einträge suchen und markieren
31.01.2015 14:26:55
Tom
Hallo Ludmila,
in der Tat, da funktioniert alles. Hmm, bei mir nicht! Fehlermeldung:
Laufzeitfehler '-2147024809(80070057'):
Eigenschaft List konnte nicht abgerufen werden- Ungültiger Argument
So sieht das bei mir aus:
Private Sub CommandButton1_Click()
Dim iRow As Integer
Dim iCol As Integer
Dim sText As String
sText = TextBox1.Text
For iRow = 0 To lstAdressen.ListCount - 1
For iCol = 0 To lstAdressen.ColumnCount - 1
If lstAdressen.List(iRow, iCol) = sText Then
lstAdressen.Selected(iRow) = True
End If
Next iCol
Next iRow
End Sub
Private Sub lstAdressen_DblClick(ByVal Cancel As MSForms.ReturnBoolean)  '=Z29, =W20, =W24
wahlindex = frmKunden.lstAdressen.ListIndex
ActiveCell.Value = Worksheets("Adressen").Cells(wahlindex + 2, 4).Value                ' _
Name / Vorname
ActiveCell.Offset(1, 0).Value = Worksheets("Adressen").Cells(wahlindex + 2, 5).Value   ' _
Strasse / Nummer
ActiveCell.Offset(2, 0).Value = Worksheets("Adressen").Cells(wahlindex + 2, 6).Value   'Plz  _
/ Ort
ActiveCell.Offset(4, 0).Value = Worksheets("Adressen").Cells(wahlindex + 2, 7).Value   'z. _
Hd.
ActiveCell.Offset(-2, 0).Value = Worksheets("Adressen").Cells(wahlindex + 2, 3).Value  ' _
Zeile 1
ActiveCell.Offset(-3, 0).Value = Worksheets("Adressen").Cells(wahlindex + 2, 2).Value  ' _
Zeile 2
ActiveCell.Offset(10, 18).Value = Worksheets("Adressen").Cells(wahlindex + 2, 9).Value
Cancel = True
Unload frmKunden
End Sub

Sub Userform_Initialize()
j = Sheets("Adressen").Cells(Rows.Count, 4).End(xlUp).Row
lstAdressen.ColumnCount = 10
lstAdressen.ColumnWidths = "37;50;50;115;100;80;80;80;80;80"
lstAdressen.List = Worksheets("Adressen").Range("A2:I" & j).Value
End Sub

Anzeige
AW: in Listbox Einträge suchen und markieren
31.01.2015 18:27:16
Tom
Hallo Ludmila,
ich habe es geschafft, so funktioniert's. Vielen Dank !!
Sub UserForm_Initialize()
Dim wks As Worksheet
Dim ii As Integer
Set wks = Sheets("Adressen")
With wks
For ii = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
lstAdressen.ColumnCount = 10
If Not IsEmpty(.Cells(ii, 1)) Then
lstAdressen.AddItem Cells(ii, 1).Value
lstAdressen.List(lstAdressen.ListCount - 1, 0) = .Cells(ii, 1).Value
lstAdressen.List(lstAdressen.ListCount - 1, 1) = .Cells(ii, 2).Value
lstAdressen.List(lstAdressen.ListCount - 1, 2) = .Cells(ii, 3).Value
lstAdressen.List(lstAdressen.ListCount - 1, 3) = .Cells(ii, 4).Value
lstAdressen.List(lstAdressen.ListCount - 1, 4) = .Cells(ii, 5).Value
lstAdressen.List(lstAdressen.ListCount - 1, 5) = .Cells(ii, 6).Value
lstAdressen.List(lstAdressen.ListCount - 1, 6) = .Cells(ii, 7).Value
lstAdressen.List(lstAdressen.ListCount - 1, 7) = .Cells(ii, 8).Value
lstAdressen.List(lstAdressen.ListCount - 1, 8) = .Cells(ii, 9).Value
lstAdressen.List(lstAdressen.ListCount - 1, 9) = .Cells(ii, 10).Value
End If
Next ii
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Einträge in einer Listbox suchen und markieren


Schritt-für-Schritt-Anleitung

Um in einer Listbox alle Einträge zu durchsuchen und zu markieren, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, eine Textbox und einen Button zu nutzen, um die Suche durchzuführen.

  1. Öffne die Userform, die deine Listbox enthält.

  2. Füge eine Textbox (TextBox1) und einen Button (CommandButton1) hinzu.

  3. Kopiere und füge den folgenden Code in das Codefenster der Userform ein:

    Private Sub CommandButton1_Click()
       Dim iRow As Integer
       Dim iCol As Integer
       Dim sText As String
       sText = TextBox1.Text
       For iRow = 0 To lstAdressen.ListCount - 1
           For iCol = 0 To lstAdressen.ColumnCount - 1
               If lstAdressen.List(iRow, iCol) = sText Then
                   lstAdressen.Selected(iRow) = True
               End If
           Next iCol
       Next iRow
    End Sub
  4. Stelle sicher, dass die Listbox (lstAdressen) korrekt initialisiert ist und die Daten aus einem Arbeitsblatt geladen werden.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler '-2147024809(80070057)': Eigenschaft List konnte nicht abgerufen werden.

    • Lösung: Überprüfe, ob die Listbox korrekt mit Daten gefüllt ist. Stelle sicher, dass die Datenquelle (z.B. Worksheets("Adressen").Range("A2:I" & j)) korrekt angegeben ist und die Daten tatsächlich vorhanden sind.
  • Fehler: Ungültiger Argument.

    • Lösung: Achte darauf, dass die Anzahl der Spalten in der Listbox (ColumnCount) mit der Anzahl der Spalten in der Datenquelle übereinstimmt.

Alternative Methoden

Eine andere Methode, um Einträge in einer Listbox zu suchen, besteht darin, die Daten vorab in ein Array zu laden und dann das Array zu durchsuchen. Dies kann die Leistung bei großen Datenmengen verbessern. Hier ein Beispiel:

Private Sub CommandButton1_Click()
    Dim iRow As Integer
    Dim sText As String
    Dim data As Variant
    data = lstAdressen.List

    sText = TextBox1.Text
    For iRow = LBound(data) To UBound(data)
        For iCol = LBound(data, 2) To UBound(data, 2)
            If data(iRow, iCol) = sText Then
                lstAdressen.Selected(iRow) = True
            End If
        Next iCol
    Next iRow
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du die Listbox mit Daten initialisieren kannst:

Sub UserForm_Initialize()
    Dim wks As Worksheet
    Dim ii As Integer
    Set wks = Sheets("Adressen")
    With wks
        For ii = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(ii, 1)) Then
                lstAdressen.AddItem .Cells(ii, 1).Value
                For col = 1 To 9
                    lstAdressen.List(lstAdressen.ListCount - 1, col) = .Cells(ii, col + 1).Value
                Next col
            End If
        Next ii
    End With
End Sub

Tipps für Profis

  • Verwende die Trim-Funktion, um sicherzustellen, dass keine führenden oder nachfolgenden Leerzeichen in der Suche vorhanden sind, z.B. If Trim(lstAdressen.List(iRow, iCol)) = Trim(sText) Then.
  • Implementiere eine Dropdown- oder Autocomplete-Funktion in der Textbox, um die Benutzerfreundlichkeit zu erhöhen.
  • Überlege, die Listbox mit einer Filterfunktion zu kombinieren, um die Suche zu optimieren.

FAQ: Häufige Fragen

1. Wie viele Spalten kann die Listbox anzeigen?
Die Listbox kann viele Spalten anzeigen, aber die maximale Spaltenanzahl hängt von der verwendeten Excel-Version und den verfügbaren Bildschirmressourcen ab.

2. Kann ich die Listbox auch ohne VBA verwenden?
Nein, um eine Listbox interaktiv zu machen und Einträge zu suchen, benötigst du VBA. Excel bietet standardmäßig keine integrierte Funktion für die Suche in Listboxen an.

3. Was kann ich tun, wenn die Listbox leer bleibt?
Überprüfe die Initialisierungsroutine und stelle sicher, dass die Datenquelle korrekt angegeben ist und die Range tatsächlich Daten enthält.

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