If Schleife in ListBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox TextBox MsgBox
Bild

Betrifft: If Schleife in ListBox
von: Chris
Geschrieben am: 30.07.2015 16:50:25

Hallo liebe Herber Gemeinde,
Ich habe wahrscheinlich ein sehr triviales Problem aber sehe den Wald vor lauter Bäumen nicht mehr.
Unten zitierter Code geht nicht über die zweite Schleife hinaus, obwohl die beiden Werte ab einem bestimmten Wert der oberen Schleife gleich sind.
Konkret geht es um dieses Konstrukt was auf jeden Fall gleich ist ab ZeileQuali = 22

 If WSQuali.Cells(ZeileQuali, 1).Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 2)
Ich habe bereits im Debugger Modus geschaut und er hat auf jeden Fall den richtigen Wert bei Me.ListBox1.List(Me.ListBox1.ListIndex, 2) und wenn ich WSQuali.Cells(22, 1).Value in eine MsgBox einsetze kommt dort auch der richtige Wert nur irgendwie wollen die beiden nicht matchen???
Was mache ich da nur falsch ???
Hier noch der gesamte Code:
For ZeileQuali = 6 To SonderZeileMax
    If WSQuali.Cells(ZeileQuali, 1).Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 2) Then '  _
Stationsnummer AusfallMA in TB QualiAnwsendTempEinschr finden
        For SpalteQuali = 13 To SonderSpalteMax
            If WSQuali.Cells(ZeileQuali, SpalteQuali).Value = "1" Then ' MA suchen der für  _
diese Station eine 1 hat
                For Spalte = 1 To MaxSpalteRotationAusfall
                    If WSRotationAusfall.Cells(3, Spalte).Value = "Rotation" And  _
WSRotationAusfall.Cells(3, Spalte + 1).Value = Rotation Then
                    SpalteRotation = Spalte
                    End If
                        For Spalte2 = SpalteRotation To (SpalteRotation + 51)
                            If WSRotationAusfall.Cells(1, Spalte2).Value = WSQuali.Cells(1,  _
SpalteQuali).Value Then ' Diesen gefundenen MA auch in der Ausfall Rotation im Ausfall TB finden
                             For ZeileSonder = 194 To 233
                                If WSRotationAusfall.Cells(ZeileSonder, Spalte2).Value = "1"  _
Then 'Schauen auf welcher Station der MA momentan arbeitet
                                    For ZeileQuali2 = 6 To SonderZeileMax
                                        If WSRotationAusfall.Cells(ZeileSonder, 1).Value =  _
WSQuali.Cells(ZeileQuali2, 1).Value Then ' Diese Stationsnummer wieder in TB QualiAnwsendTempEinschr suchen
                                            For SpalteQuali2 = 13 To SonderSpalteMax
                                                If WSQuali.Cells(1, SpalteQuali2).Value =  _
WSRotationAusfall.Cells(280, 1).Value Then ' Wieder den Ausgefallen MA suchen in TB QualiAnwesendTempEinschr
                                                    If WSQuali.Cells(ZeileQuali2, SpalteQuali2). _
Value = "1" Then 'Schauen ob der Ausgefallenen MA auch die Station des potenteillen Tauschpartner kann
                                                    Me.ListBox2.AddItem WSQuali.Cells(1,  _
SpalteQuali).Value ' Namen des Potentiellen Tauschpartners eintragen
                                                    Me.ListBox2.List(Me.ListBox2.ListCount - 1,  _
2) = WSQuali.Cells(ZeileQuali2, 3).Value 'aktuelle Station des potentiellen Tauschparnters eintragen
                                                    For ZeileAusgabe = 5 To AusgabeZeileMax
                                                     If WSAusgabe.Cells(ZeileAusgabe, 1).Value = _
 WSQuali.Cells(1, SpalteQuali).Value Then 'potentiellen Tauschpartner in der Ausgabe suchen
                                                     Me.ListBox2.List(Me.ListBox2.ListCount - 1, _
 1) = WSAusgabe.Cells(ZeileAusgabe, Rotation).Value 'Station für die vorangegangene Belgung
                                                     Me.ListBox2.List(Me.ListBox2.ListCount - 1, _
 3) = WSAusgabe.Cells(ZeileAusgabe, Rotation + 2).Value 'Station der danach liegenden Rotation (falls noch eine gibt)
                                                     End If
                                                     Next ZeileAusgabe
                                                     End If
                                                End If
                                            Next SpalteQuali2
                                        End If
                                    Next ZeileQuali2
                                End If
                            Next ZeileSonder
                        End If
                    Next Spalte2
                Next Spalte
            End If
        Next SpalteQuali
    End If
 Next ZeileQuali

Beste Grüße
Chris

Bild

Betrifft: AW: If Schleife in ListBox
von: Peter Feustel
Geschrieben am: 30.07.2015 16:56:37
Hallo Chris,
kann es sein, dass du hier Text gegen Zahl vergleichst und deshlab Ungleichheit herausbekommst?
Evtl. hilft für beide Werte eine Konvertierung mit CDbl oder CInt o. ä.
Gruß Peter

Bild

Betrifft: AW: If Schleife in ListBox
von: Chris
Geschrieben am: 30.07.2015 17:14:24
Servus Peter,
danke für deine Nachricht. Habe jetzt mal den Wert in WSQuali auf Stadt gestellt .... keine Reaktion (kein Match)
und auch wenn der Wert auf Zahl gestellt ist (kein Match)
Aber wenn der Wert auf Zahl gestellt ist müsste es doch gehen oder? der Vergleich geschieht doch nur zwischen der Syntax ???
Oder gibt es da ein Spezial fall bei ListBox??
Ich werde echt noch wahnsinnig mit diesen VERDAMMTEN Details!
Danke und Grüße
Chris

Bild

Betrifft: AW: If Schleife in ListBox
von: Peter Feustel
Geschrieben am: 30.07.2015 17:36:55
Hallo Chris,
ListBox-Werte sind wie Combobox- und TextBox-Werte immer Text, der ggf. zur Zahl konvertiert werden muss.
Es könnte natürlich auch sein, dass du führende oder nachfolgende Leerzeichen in den Werten hast, die erst mit Trim eliminiert werden müssten.
Auch Groß-/Kleinschreibung spielt bei Texten evtl. einen Streich beim Vergleich.
Also muss auch hier alles in Groß oder Klein konvertiert werden.
Da wir Deine Daten nicht im Original sehen, kann man nur raten, was die Ursache sein könnte.
Gruß Peter

Bild

Betrifft: AW: If Schleife in ListBox
von: Chris
Geschrieben am: 31.07.2015 11:41:33
Hi Peter,
also ich habe jetzt den Inhalt der ListBox in einen Long Dateityp Konvertiert und jetzt erkennt er den Wert im Vergleich. Nochmal danke für den Hinweis. WAHNSINN was solche Kleinigkeiten einen wieder für zeit und Nerven kosten!

If WSQuali.Cells(ZeileQuali, 1).Value = CLng(Me.ListBox1.List(Me.ListBox1.ListIndex, 2))
Beste Grüße
Chris

 Bild

Beiträge aus den Excel-Beispielen zum Thema "If Schleife in ListBox"