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

Forumthread: Listbox füllen mit Bedingungen

Listbox füllen mit Bedingungen
07.11.2013 15:43:54
Albert
Hallo zusammen,
mit dem Anwählen der Userform lasse ich eine Listbox füllen. Problem an der Sache ist, dass mit der angegebenen Range alle Einträge in die Listbox gelangen.
Ich möchte aber nur besondere, die in der Spalte 5 ein "x" haben.
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 5
ListBox1.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
ListBox1.ColumnHeads = True
ListBox1.RowSource = "A5:E" & Range("E1000").End(xlUp).Row
End Sub
Wäre euch um Hilfe echt dankbar.
Gruß
A.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox füllen mit Bedingungen
07.11.2013 16:28:18
Rudi
Hallo,
Private Sub UserForm_Initialize()
Dim arrList(), rngC As Range, j As Integer, n As Integer
ReDim arrList(1 To WorksheetFunction.CountIf(Columns(5), "x"), 1 To 5)
For Each rngC In Range(Cells(5, 1), Cells(Rows.Count, 1).End(xlUp))
If rngC.Offset(, 4) = "x" Then
n = n + 1
For j = 0 To 4
arrList(n, j + 1) = rngC.Offset(, j)
Next
End If
Next
With ListBox1
.ColumnCount = 5
.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
.List = arrList
End With
End Sub

Gruß
Rudi

Anzeige
Danke Rudi, funktioniert! owT
07.11.2013 16:38:01
Albert
s

AW: Listbox füllen mit Bedingungen
07.11.2013 16:39:03
Peter
Hallo Albert,
dann musst Du auf RowSource und ColumnHead verzichten und eine Zeile nach der anderen einstellen:
Option Explicit
Private Sub UserForm_Initialize()
Dim lZeile  As Long
Dim iLiBo   As Integer
With ListBox1
.Clear
.ColumnCount = 5
.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
With ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattnamen ggf. anpassen!
For lZeile = 5 To .Cells(.Rows.Count, 5).End(xlUp).Row
If LCase(.Range("E" & lZeile).Value) = "x" Then
ListBox1.AddItem " "
ListBox1.List(iLiBo, 0) = .Range("A" & lZeile).Value
ListBox1.List(iLiBo, 1) = .Range("B" & lZeile).Value
ListBox1.List(iLiBo, 2) = .Range("C" & lZeile).Value
ListBox1.List(iLiBo, 3) = .Range("D" & lZeile).Value
ListBox1.List(iLiBo, 4) = .Range("E" & lZeile).Value
iLiBo = iLiBo + 1
End If
Next lZeile
End With
End With
End Sub
Du kannst natürlich, wenn Du in Deiner Liste Überschriften hast, diese als erste in die ListBox einstellen - dann hast Du sie dort als Überschrift.
Gruß Peter

Anzeige
@Peter... funktioniert prima! Dankeschön owT
07.11.2013 20:43:49
Albert
s
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox in Excel VBA mit Bedingungen füllen


Schritt-für-Schritt-Anleitung

Um eine Listbox in einer Userform in Excel VBA mit bestimmten Bedingungen zu füllen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge eine Userform hinzu: Klicke mit der rechten Maustaste auf dein Projekt, wähle „Einfügen“ und dann „Userform“.
  3. Füge eine Listbox zur Userform hinzu: Ziehe die Listbox aus der Toolbox auf die Userform.
  4. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub UserForm_Initialize()
    Dim arrList(), rngC As Range, j As Integer, n As Integer
    ReDim arrList(1 To WorksheetFunction.CountIf(Columns(5), "x"), 1 To 5)

    For Each rngC In Range(Cells(5, 1), Cells(Rows.Count, 1).End(xlUp))
        If rngC.Offset(, 4) = "x" Then
            n = n + 1
            For j = 0 To 4
                arrList(n, j + 1) = rngC.Offset(, j)
            Next
        End If
    Next

    With ListBox1
        .ColumnCount = 5
        .ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
        .List = arrList
    End With
End Sub
  1. Passe den Code an: Achte darauf, dass Du den Bereich und die Spaltennummern an Deine Daten anpasst.

Häufige Fehler und Lösungen

  • Fehler: ListBox bleibt leer
    Lösung: Überprüfe, ob die Range korrekt ist und ob die Bedingung (z.B. "x" in Spalte 5) tatsächlich erfüllt ist.

  • Fehler: Index außerhalb des Bereichs
    Lösung: Stelle sicher, dass die ReDim-Anweisung richtig ist und die Anzahl der Zeilen, die Du erwartest, korrekt berechnet wird.


Alternative Methoden

Eine alternative Methode besteht darin, die Listbox zeilenweise zu füllen, anstatt ein Array zu verwenden. Hier ist ein Beispielcode:

Private Sub UserForm_Initialize()
    Dim lZeile As Long
    Dim iLiBo As Integer
    With ListBox1
        .Clear
        .ColumnCount = 5
        .ColumnWidths = "2cm;2cm;4cm;4cm;4cm"

        For lZeile = 5 To ThisWorkbook.Worksheets("Tabelle2").Cells(Rows.Count, 5).End(xlUp).Row
            If LCase(ThisWorkbook.Worksheets("Tabelle2").Range("E" & lZeile).Value) = "x" Then
                .AddItem " "
                .List(iLiBo, 0) = ThisWorkbook.Worksheets("Tabelle2").Range("A" & lZeile).Value
                .List(iLiBo, 1) = ThisWorkbook.Worksheets("Tabelle2").Range("B" & lZeile).Value
                .List(iLiBo, 2) = ThisWorkbook.Worksheets("Tabelle2").Range("C" & lZeile).Value
                .List(iLiBo, 3) = ThisWorkbook.Worksheets("Tabelle2").Range("D" & lZeile).Value
                .List(iLiBo, 4) = ThisWorkbook.Worksheets("Tabelle2").Range("E" & lZeile).Value
                iLiBo = iLiBo + 1
            End If
        Next lZeile
    End With
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du eine Listbox in Excel VBA füllen kannst:

  • Beispiel 1: Fülle die Listbox mit Daten aus einer bestimmten Tabelle, indem Du den Tabellennamen anpasst.
  • Beispiel 2: Verwende Filter, um nur bestimmte Daten anzuzeigen, basierend auf unterschiedlichen Bedingungen.

Tipps für Profis

  • Verwende Option Explicit: Das zwingt Dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Teste den Code Schritt für Schritt: Nutze Debugging, um sicherzustellen, dass jede Zeile wie erwartet funktioniert.
  • Dokumentiere Deinen Code: Füge Kommentare hinzu, um die Funktionalität jeder Codezeile zu erklären.

FAQ: Häufige Fragen

1. Wie kann ich die Listbox sortieren?
Du kannst die Daten vor dem Füllen der Listbox sortieren, indem Du eine Sortierfunktion in Deinen Code integrierst.

2. Funktioniert dieser Code in Excel 2016?
Ja, dieser Code ist mit Excel 2016 und neueren Versionen kompatibel. Achte darauf, dass Du die richtigen Objekte und Methoden verwendest, die in der jeweiligen Version verfügbar sind.

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