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

Forumthread: Listbox inhalte nur anzeigen bei bedingung

Listbox inhalte nur anzeigen bei bedingung
04.12.2008 17:40:00
Fred
Hallo zusammen
Ich habe da ein Problem was ich nicht lösen kann, auch nach Stundenlangem Googeln, bin ich zu keinem Ergebniss gekommen.
Ich habe in meiner Tabelle mit Hilfe der Toolbox mir eine Listbox (Kombinationsfeld) gepackt. Jetzt mein Problem.
Ich möchte gerne das in der Listbox nur dann der Wert von Bestimmten Zellen angezeigt wird, wenn in einer Zelle eine 4 steht.
Also der Bereich den Die Listbox abfragen soll ist B4 bis B40 nur wenn in einer dieser Zellen eine 4 steht, soll der Inhalt der gleichwertigen Zelle aus Reihe A und M in der ListBox angezeigt werden.
Bsp.
B4=4 dann soll in ListBox Spalte 1 Der Wert aus A4 stehen und in Spalte 2 der Wert aus M4
B5=1 keine anzeige
B8=4 dann soll in Listbox Spalte 1 Der Wert aus A8 stehen und in Spalte 2 der Wert aus M8
usw.
Ich hoffe das ich mich verständlich ausgedrückt habe, also nur alle werte anzeigen die mit einer 4 makiert sind.
Ich hoffe mir kann jemand helfen, ich habe keinen Blassen, wie ich das bewerkstelligen könnte
Grüße Fred
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox inhalte nur anzeigen bei bedingung
04.12.2008 18:34:33
Peter
Hallo Fred,
ich weiß nicht, was du hast, eine ListBox oder eine ComboBox.
Mein Makro füllt eine ListBox.
Option Explicit

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


Wenn du allerdings ListBox1 in ComboBox1 änderst, sollte das Makro auch für eine ComboBox laufen.
Gruß Peter

Anzeige
AW: Listbox inhalte nur anzeigen bei bedingung
04.12.2008 18:41:16
Peter
Hallo Fred,
hier das Makro für die ComboBox

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


Gruß Peter

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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 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.

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und dann auf Modul.
  3. 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
  1. Schließe den VBA-Editor und gehe zurück zu deiner Excel-Tabelle.

  2. 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

  • Fehler: "ListBox1 nicht gefunden"

    • Stelle sicher, dass der Name der ListBox in deiner Excel-Datei korrekt ist. Du kannst den Namen im Eigenschaftenfenster des VBA-Editors überprüfen.
  • Fehler: Leere ListBox

    • Achte darauf, dass die Zellen B4 bis B40 tatsächlich Werte enthalten. Das Makro funktioniert nur, wenn die Bedingungen erfüllt sind.

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.

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