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

Forumthread: Mehrspaltige ListBox füllen

Mehrspaltige ListBox füllen
12.07.2008 16:41:42
edie
Hallo zusammen,
im Archiv habe ich nachfolgenden Code gefunden,
dabei wird die ListBox in Abhängigkeit einer TextBox Eingabe gefüllt.
Leider nur die Spalte A. Wie wäre die Syntax, wenn die ListBox Mehrspaltig
wäre und die Spalten A bis F angezeigt bzw. gefüllt wären?

Private Sub TextBox1_Change()
Dim LRow As Long, i As Long
Dim wks1 As Worksheet
Set wks1 = Worksheets("Tabelle1")
LRow = wks1.Cells(Rows.Count, 1).End(xlUp).Row
With Me
ListBox1.Clear
For i = 3 To LRow
If UCase(Left(wks1.Cells(i, 1).Text, Len(TextBox1.Text))) = UCase(TextBox1.Text) Then
With .ListBox1
.AddItem wks1.Cells(i, 1)
End With
End If
Next i
End With
End Sub


Kann mir jemand helfen?
Vielen Dank im Voraus.
Grüße

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrspaltige ListBox füllen
12.07.2008 16:56:43
Hajo_Zi
Hallo Edie,
mir einem Beispiel hat es meist den Vorteil die Lösung wird gleich für das richtige Projekt erarbeitet und man braucht keine Zeit mehr investieren.
Mehr Spalten füllts Du nach folgendem Prinzip
LST_TeilBez.List(I - 2, 1) = .Cells(I, 13)
Warum soll ich die Zeit investieren und Dein Beispiel nachbauen, die Zeit hast Du ja schon investiert.

Anzeige
AW: Mehrspaltige ListBox füllen
12.07.2008 17:03:00
edie
Hallo Hajo,
vielen Dank für das Beispiel, werde es versuchen umzusetzen.
Leider habe ich nicht die Vorkentnisse in VBA, deshalb bin ich
dankbar für die hilfe ud versuche mein Bestes.
Grüße

AW: Mehrspaltige ListBox füllen
12.07.2008 17:03:02
Daniel
Hi
du musst dein Makro so ergänzen:

With .ListBox1
.AddItem wks1.Cells(i, 1)
.list(.listcount-1,1) = wks.cells(i,2)
.list(.listcount-1,2) = wks.cells(i,3)
End With


und in der Eigenschaft "ColumnCount" der Listbox die entsprechende Spaltenzahl einstellen.
ggf müssen die Abstandsbreiten der Spalten noch in der Eigenschaft "ColumnWidths" angepasst werden.
Gruß, Daniel

Anzeige
AW: Es funktioniert 100%. Besten Dank.
12.07.2008 17:06:00
edie
Hallo Daniel,
vielen Dank es funtioniert bestens.
Grüße und Danke
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrspaltige ListBox in VBA füllen


Schritt-für-Schritt-Anleitung

Um eine mehrspaltige ListBox in VBA zu füllen, gehe wie folgt vor:

  1. Erstelle eine UserForm und füge eine ListBox (z.B. ListBox1) und eine TextBox (TextBox1) hinzu.
  2. Öffne den VBA-Editor (Alt + F11) und doppelklicke auf die UserForm.
  3. Füge den folgenden Code in das Codefenster der UserForm ein:
Private Sub TextBox1_Change()
    Dim LRow As Long, i As Long
    Dim wks1 As Worksheet
    Set wks1 = Worksheets("Tabelle1")
    LRow = wks1.Cells(Rows.Count, 1).End(xlUp).Row
    With Me
        ListBox1.Clear
        For i = 3 To LRow
            If UCase(Left(wks1.Cells(i, 1).Text, Len(TextBox1.Text))) = UCase(TextBox1.Text) Then
                With .ListBox1
                    .AddItem wks1.Cells(i, 1) ' Spalte A
                    .List(.ListCount - 1, 1) = wks1.Cells(i, 2) ' Spalte B
                    .List(.ListCount - 1, 2) = wks1.Cells(i, 3) ' Spalte C
                    ' Füge zusätzliche Spalten nach Bedarf hinzu
                End With
            End If
        Next i
    End With
End Sub
  1. Setze die Eigenschaften der ListBox:
    • Stelle ColumnCount auf die Anzahl der Spalten ein (z.B. 3 für Spalten A, B und C).
    • Passe gegebenenfalls ColumnWidths an, um die Breite der Spalten zu steuern.

Häufige Fehler und Lösungen

  • Fehler: ListBox bleibt leer
    Lösung: Überprüfe, ob die TextBox-Eingabe mit den Werten in der ersten Spalte übereinstimmt. Achte auf Groß- und Kleinschreibung.

  • Fehler: Spalten werden nicht angezeigt
    Lösung: Stelle sicher, dass die ColumnCount-Eigenschaft der ListBox korrekt eingestellt ist.

  • Fehler: Nur die erste Spalte wird gefüllt
    Lösung: Vergewissere dich, dass du die richtigen Indizes für die Spalten in der ListBox verwendest (beginnend bei 0).


Alternative Methoden

Eine alternative Methode, um die ListBox mit mehreren Spalten zu füllen, ist die Verwendung eines Arrays. Du kannst die Daten in ein Array laden und die ListBox dann mit diesem Array füllen:

Dim dataArray As Variant
dataArray = Application.Transpose(wks1.Range("A3:C" & LRow).Value)
ListBox1.List = dataArray

Diese Methode ist effizienter, wenn Du viele Daten hast.


Praktische Beispiele

Ein einfaches Beispiel für die Verwendung einer mehrspaltigen ListBox wäre ein Kontaktformular, in dem die Namen, Telefonnummern und E-Mail-Adressen angezeigt werden. Hierfür könntest Du die Daten in einer Excel-Tabelle organisieren und mit dem oben beschriebenen VBA-Code die ListBox füllen.


Tipps für Profis

  • Nutze ListBox.ListIndex, um den aktuell ausgewählten Eintrag zu ermitteln und entsprechend zu verarbeiten.
  • Experimentiere mit der RowSource-Eigenschaft, um die ListBox direkt aus einem Zellbereich zu füllen.
  • Achte darauf, die ListBox zu aktualisieren, wenn sich die Quelldaten ändern, um die Benutzerfreundlichkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie viele Spalten kann eine ListBox haben?
Die ListBox kann bis zu 255 Spalten haben, abhängig von der verfügbaren Bildschirmfläche.

2. Kann ich die ListBox mit Daten aus mehreren Tabellen füllen?
Ja, Du kannst Daten aus verschiedenen Tabellen zusammenführen und die ListBox entsprechend füllen.

3. Was ist der Unterschied zwischen AddItem und List?
AddItem fügt einen neuen Eintrag zur ListBox hinzu, während List verwendet wird, um vorhandene Einträge zu bearbeiten oder zu lesen.

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