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

ListBox mit For Schleife durchlaufen

Forumthread: ListBox mit For Schleife durchlaufen

ListBox mit For Schleife durchlaufen
18.07.2015 18:23:57
Chris
Hallo liebe Herber Gemeinde,
ich möchte gerne eine ListBox mit 4 Spalten mit einer For Schleife Zeile für Zeile durchlaufen. Leider gibt er mit meinen Anweisungen die Werte aus der Listbox nicht aus.
Mein code sieht so aus

For y = 0 To Me.ListBox3.ListCount - 1
Set Treffer = WSZiel.Range(WSZiel.Cells(6, 3), WSZiel.Cells(45, 3)).Find(What:=Me.  _
_ListBox3.List(y, 0).Text, lookat:=xlWhole)
If Not Treffer Is Nothing Then
Next y
Zudem habe ich danach noch einige If Schleifen in dieser For schleife geschachtelt
 ElseIf Me.ListBox3.List(y, 2) = "ganztägig" Then
SpalteZiel = SpalteZiel + 12 'erste Spalte, in der ein Name  _
steht
For Spalte3 = SpalteZiel To (SpalteZiel + 39)
If WSZiel.Cells(1, Spalte3).Value = Me.ListBox3.List(y, 1) Then  _
'Name des Mitarbeiters, der die Qualifizierung durchführen soll
WSZiel.Range(WSZiel.Cells(6, Spalte3), WSZiel.Cells(45, Spalte3) _
).Value = "0"
WSZiel.Cells(ZeileZiel, Spalte3).Value = "1"
End If
Next Spalte3
End If
Der Code läuft durch aber die Werte aus den Lustboxen werden nicht übernommen. Wenn ich mit der Quick Info im Debuggermodus über die Lisbox werte gehe sagt er "Eigenschaft List konnte nicht abgerufen werden..".
Weiss jemand woran das liegen könnte.
Besten Dank
Chris

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox mit For Schleife durchlaufen
19.07.2015 08:05:20
Nepumuk
Hallo,
das: ListBox3.List(y, 0).Text ist falsch. Hier darf nur: ListBox3.List(y, 0) stehen.
Gruß
Nepumuk

AW: ListBox mit For Schleife durchlaufen
19.07.2015 11:20:06
Chris
Servus Nepumuk,
Danke für deine Antwort. Die Schleifen laufen jetzt wunderbar durch die Listboxen!!
Schönen Sonntag noch!
Anzeige
;
Anzeige

Infobox / Tutorial

ListBox mit For Schleife durchlaufen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein UserForm hinzu und platziere eine ListBox mit mehreren Spalten.

  3. Füge den folgenden Code in das UserForm ein, um die ListBox mit einer For Schleife durchzulaufen:

    Dim y As Integer
    Dim Treffer As Range
    Dim WSZiel As Worksheet
    Set WSZiel = ThisWorkbook.Sheets("Zielblatt") ' Ändere "Zielblatt" entsprechend
    
    For y = 0 To Me.ListBox3.ListCount - 1
        Set Treffer = WSZiel.Range(WSZiel.Cells(6, 3), WSZiel.Cells(45, 3)).Find(What:=Me.ListBox3.List(y, 0), lookat:=xlWhole)
        If Not Treffer Is Nothing Then
            ' Deine weiteren Anweisungen hier einfügen
        ElseIf Me.ListBox3.List(y, 2) = "ganztägig" Then
            Dim SpalteZiel As Integer
            SpalteZiel = 1 ' Setze hier den Anfangswert
            For Spalte3 = SpalteZiel To (SpalteZiel + 39)
                If WSZiel.Cells(1, Spalte3).Value = Me.ListBox3.List(y, 1) Then
                    WSZiel.Range(WSZiel.Cells(6, Spalte3), WSZiel.Cells(45, Spalte3)).Value = "0"
                    WSZiel.Cells(ZeileZiel, Spalte3).Value = "1"
                End If
            Next Spalte3
        End If
    Next y
  4. Teste den Code durch Ausführen des UserForms. Achte darauf, dass die ListBox mit den richtigen Daten gefüllt ist.


Häufige Fehler und Lösungen

  • Fehler: "Eigenschaft List konnte nicht abgerufen werden"

    • Lösung: Stelle sicher, dass du ListBox3.List(y, 0) anstelle von ListBox3.List(y, 0).Text verwendest. Dadurch wird der Fehler vermieden und die Werte werden korrekt abgerufen.
  • Fehler beim Durchlaufen der Schleife

    • Lösung: Überprüfe, ob die ListBox tatsächlich Daten enthält. Eine leere ListBox führt zu unvorhersehbarem Verhalten in der Schleife.

Alternative Methoden

Anstatt eine For Schleife zu verwenden, kannst Du auch die For Each Schleife nutzen, um durch die ListBox-Elemente zu iterieren. Diese Methode kann den Code oft lesbarer machen:

Dim item As Variant
For Each item In Me.ListBox3.List
    ' Verarbeite das Element
Next item

Praktische Beispiele

Hier ein einfaches Beispiel, um die Werte aus einer ListBox in eine Excel-Tabelle zu übertragen:

  1. Erstelle eine ListBox mit 3 Spalten: Name, Status, Typ.
  2. Füge diesen Code in das UserForm ein:

    Dim i As Integer
    Dim ZeileZiel As Integer
    ZeileZiel = 1 ' Startzeile in Excel
    
    For i = 0 To Me.ListBox3.ListCount - 1
        WSZiel.Cells(ZeileZiel, 1).Value = Me.ListBox3.List(i, 0) ' Name
        WSZiel.Cells(ZeileZiel, 2).Value = Me.ListBox3.List(i, 1) ' Status
        WSZiel.Cells(ZeileZiel, 3).Value = Me.ListBox3.List(i, 2) ' Typ
        ZeileZiel = ZeileZiel + 1
    Next i

Tipps für Profis

  • Debugging: Nutze die Debugging-Tools in VBA, um Deine Schleifen zu überprüfen. Setze Haltepunkte und beobachte die Werte in der ListBox.
  • Datenvalidierung: Stelle sicher, dass die Daten in der ListBox valide sind, bevor Du sie verarbeitest. Dies kann Fehler vermeiden.
  • Leistung: Wenn Du mit großen Datenmengen arbeitest, erwäge, die Bildschirmaktualisierung während des Codes zu deaktivieren:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich die ListBox mit Daten füllen?
Du kannst die ListBox in der UserForm-Initialize-Methode mit Werten füllen. Beispiel:

Private Sub UserForm_Initialize()
    Me.ListBox3.AddItem "Name1"
    Me.ListBox3.List(0, 1) = "Status1"
    Me.ListBox3.List(0, 2) = "Typ1"
End Sub

2. Kann ich die ListBox dynamisch zur Laufzeit anpassen?
Ja, Du kannst die ListBox zur Laufzeit anpassen, indem Du mit der AddItem-Methode neue Elemente hinzufügst oder RemoveItem verwendest, um Elemente zu entfernen.

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