ListBox Inhalte bedingt anzeigen in Excel
Schritt-für-Schritt-Anleitung
Um die ListBox in Excel so zu konfigurieren, dass sie nur bestimmte Werte anzeigt, wenn in einer Zelle eine 4 steht, kannst du das folgende VBA-Makro verwenden. Achte darauf, dass du in der Excel-Version die Entwicklertools aktiviert hast.
-
Öffne den Visual Basic for Applications (VBA) Editor:
-
Füge ein neues Modul hinzu:
- Klicke im Menü auf
Einfügen
und dann auf Modul
.
-
Kopiere den folgenden VBA-Code in das Modul:
Public Sub ListBox_Fuellen()
Dim lZeile As Long
Dim lLisBox As Long
With ThisWorkbook.Worksheets("Tabelle3")
.ListBox1.ColumnCount = 2
.ListBox1.ColumnWidths = "3,5 cm; 3,3 cm"
For lZeile = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(lZeile, 2).Value = 4 Then
.ListBox1.AddItem " "
.ListBox1.List(lLisBox, 0) = Range("A" & lZeile).Value
.ListBox1.List(lLisBox, 1) = Range("M" & lZeile).Value
lLisBox = lLisBox + 1
End If
Next lZeile
End With
End Sub
-
Schließe den VBA-Editor und gehe zurück zu deiner Excel-Tabelle.
-
Führe das Makro aus:
- Drücke
ALT + F8
, wähle ListBox_Fuellen
und klicke auf Ausführen
.
Die ListBox wird nun nur die Werte anzeigen, die in der Spalte B eine 4 haben.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn du eine ComboBox verwenden möchtest, kannst du den folgenden VBA-Code anpassen:
Public Sub ComboBox_Fuellen()
Dim lZeile As Long
Dim lComBox As Long
With ThisWorkbook.Worksheets("Tabelle3")
.ComboBox1.Clear
.ComboBox1.ColumnCount = 2
.ComboBox1.ColumnWidths = "3,5 cm; 3,3 cm"
For lZeile = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(lZeile, 2).Value = 4 Then
.ComboBox1.AddItem " "
.ComboBox1.List(lComBox, 0) = Range("A" & lZeile).Value
.ComboBox1.List(lComBox, 1) = Range("M" & lZeile).Value
lComBox = lComBox + 1
End If
Next lZeile
End With
End Sub
Praktische Beispiele
Angenommen, du hast folgende Werte in deiner Tabelle:
A |
B |
M |
Wert1 |
4 |
Info1 |
Wert2 |
1 |
Info2 |
Wert3 |
4 |
Info3 |
Wenn du das Makro ausführst, wird die ListBox die Werte "Wert1" und "Wert3" sowie die entsprechenden "Info1" und "Info3" anzeigen.
Tipps für Profis
-
Nutze die Funktion Application.ScreenUpdating = False
, um die Bildschirmaktualisierung während des Makro-Laufs zu deaktivieren. Das beschleunigt die Ausführung.
-
Überlege, ob du die Werte dynamisch filtern möchtest, z.B. durch Hinzufügen von weiteren Bedingungen.
FAQ: Häufige Fragen
1. Frage
Wie kann ich die Spaltenbreiten in der ListBox anpassen?
Antwort: Du kannst die ColumnWidths
-Eigenschaft im VBA-Code ändern, um die Spaltenbreiten anzupassen.
2. Frage
Funktioniert das auch in Excel 365?
Antwort: Ja, das Makro funktioniert in allen aktuellen Excel-Versionen, die VBA unterstützen, einschließlich Excel 365.