Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Seltsames Verhalten einer Listbox

Seltsames Verhalten einer Listbox
01.09.2015 15:12:44
Hendrik
Hallo zusammen, ich habe irgendwie ein seltsames Verhalten meiner Listbox auf einem UserForm. Mittels Schaltfläche schreibe ich in diese Werte hinein oder nehme sie wieder heraus.
Wenn ich danach eine Zeile selektiere und diese Testroutine laufen lasse
    Dim i As Integer
Debug.Print "-------"
Debug.Print "Anzahl: " & lstJoin2.ListCount
If lstJoin2.ListCount > 0 Then
For i = 0 To lstJoin2.ListCount - 1
Debug.Print i & ": " & lstJoin2.List(i, 0) & " - " & lstJoin2.List(i, 1) & " - " &  _
lstJoin2.List(i, 2) & " - " & lstJoin2.List(i, 3) & " - " & lstJoin2.List(i, 4) & " - " & lstJoin2.List(i, 5) & " - " & lstJoin2.List(i, 6) & " - " & lstJoin2.List(i, 7) & " - " & lstJoin2.List(i, 8) & " - " & lstJoin2.List(i, 9) & " - "
Next i
Debug.Print "Auswahl: " & lstJoin2.ListIndex & " - "; lstJoin2.List(lstJoin2.ListIndex,  _
1)
Debug.Print "-------"
End If
,dann wird mir zwar als lstJoin2.ListIndex die richtige Zeile ausgegeben, der Wert dazu, den ich mir durch
lstJoin2.List(lstJoin2.ListIndex, 1)
ausgeben lasse ist jedoch immer der gleiche, nämlich der erste. Wie kommt das? Was läuft hier falsch?
Für Tipps bin ich sehr dankbar! Grüße
Hendrik

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seltsames Verhalten einer Listbox
01.09.2015 15:38:21
Gerd
Hallo Hendrik,
vermutlich das Befüllen. Lade doch bitte eine Beispieldatei mit deinem Code hoch, damit nicht nur
vermutet werden kann.
Gruß Gerd

AW: Seltsames Verhalten einer Listbox
02.09.2015 10:34:09
Hendrik
Hallo Gerd,
ja, das habe ich mir schon gedacht. :o)
Allerdings ist das ein riesen Ding, was ich nicht verschicken möchte. Ich versuche dennoch mal die wesentlichen Teile anzuhängen.
Zur Auswahl von verschiedenen Einträgen, kann der Anwender Einträge von der einen Listbox in die andere "schubsen". Dafür hat er die vier Schaltflächen
>
>>
zur Verfügung, kann also alle Einträge oder einzelne bewegen.
Füge ich alle hinzu (>>), wird dieser Code ausgeführt:
Private Sub cmdJoinHinzuAlle_Click()
Dim i As Integer
For i = 0 To lstJoin1.ListCount - 1
lstJoin2.AddItem lstJoin1.List(i, 0)
lstJoin2.List(lstJoin2.ListCount - 1, 1) = lstJoin1.List(i, 1)
lstJoin2.List(lstJoin2.ListCount - 1, 2) = lstJoin1.List(i, 2)
lstJoin2.List(lstJoin2.ListCount - 1, 3) = lstJoin1.List(i, 3)
lstJoin2.List(lstJoin2.ListCount - 1, 4) = lstJoin1.List(i, 4)
lstJoin2.List(lstJoin2.ListCount - 1, 5) = lstJoin1.List(i, 5)
lstJoin2.List(lstJoin2.ListCount - 1, 6) = lstJoin1.List(i, 6)
lstJoin2.List(lstJoin2.ListCount - 1, 7) = ""
lstJoin2.List(lstJoin2.ListCount - 1, 8) = ""
lstJoin2.List(lstJoin2.ListCount - 1, 9) = ""
Next i
lstJoin1.Clear
cmdJoinEntfernen.Enabled = True
cmdJoinEntfernenAlle.Enabled = True
cmdJoinAliasFeld.Enabled = True
cmdJoinAliasTabelle.Enabled = True
Call sortiereBox(lstJoin2, 10, 1, 1, 1)
lstJoin2.ListIndex = 0
cmdJoinHinzu.Enabled = False
cmdJoinHinzuAlle.Enabled = False
lblJoin1.Caption = lstJoin1.ListCount
lblJoin2.Caption = lstJoin2.ListCount
Call sqlGenerieren
End Sub
Entferne ich alle (Private Sub cmdJoinEntfernenAlle_Click() Dim i As Integer For i = 0 To lstJoin2.ListCount - 1 lstJoin1.AddItem lstJoin2.List(i, 0) lstJoin1.List(lstJoin1.ListCount - 1, 1) = lstJoin2.List(lstJoin2.ListIndex, 1) lstJoin1.List(lstJoin1.ListCount - 1, 2) = lstJoin2.List(lstJoin2.ListIndex, 2) lstJoin1.List(lstJoin1.ListCount - 1, 3) = lstJoin2.List(lstJoin2.ListIndex, 3) lstJoin1.List(lstJoin1.ListCount - 1, 4) = lstJoin2.List(lstJoin2.ListIndex, 4) lstJoin1.List(lstJoin1.ListCount - 1, 5) = lstJoin2.List(lstJoin2.ListIndex, 5) lstJoin1.List(lstJoin1.ListCount - 1, 6) = lstJoin2.List(lstJoin2.ListIndex, 6) lstJoin1.List(lstJoin1.ListCount - 1, 7) = "" lstJoin1.List(lstJoin1.ListCount - 1, 8) = "" lstJoin1.List(lstJoin1.ListCount - 1, 9) = "" 'Alias wieder freigeben: If lstJoin2.List(lstJoin2.ListIndex, 7) "" Then aliasFreigeben (lstJoin2.List( _ lstJoin2.ListIndex, 7)) If lstJoin2.List(lstJoin2.ListIndex, 8) "" Then aliasFreigeben (lstJoin2.List( _ lstJoin2.ListIndex, 8)) Next i lstJoin2.Clear cmdJoinEntfernen.Enabled = False cmdJoinEntfernenAlle.Enabled = False cmdJoinAliasFeld.Enabled = False cmdJoinAliasTabelle.Enabled = False Call sortiereBox(lstJoin1, 10, 1, 1, 1) lstJoin1.ListIndex = 0 cmdJoinHinzu.Enabled = True cmdJoinHinzuAlle.Enabled = True lblJoin1.Caption = lstJoin1.ListCount lblJoin2.Caption = lstJoin2.ListCount Call sqlGenerieren End Sub Wenn ich nun wieder einen einzelnen Eintrag (>) übertrage
Private Sub cmdJoinHinzu_Click()
Dim strJoin As String
Dim i As Integer
If lstJoin1.ListCount > 0 Then
If lstJoin1.ListIndex >= 0 Then
'Zeile in die rechte Box übertragen:
lstJoin2.AddItem lstJoin1.List(lstJoin1.ListIndex, 0)
lstJoin2.List(lstJoin2.ListCount - 1, 1) = lstJoin1.List(lstJoin1.ListIndex, 1)
lstJoin2.List(lstJoin2.ListCount - 1, 2) = lstJoin1.List(lstJoin1.ListIndex, 2)
lstJoin2.List(lstJoin2.ListCount - 1, 3) = lstJoin1.List(lstJoin1.ListIndex, 3)
lstJoin2.List(lstJoin2.ListCount - 1, 4) = lstJoin1.List(lstJoin1.ListIndex, 4)
lstJoin2.List(lstJoin2.ListCount - 1, 5) = lstJoin1.List(lstJoin1.ListIndex, 5)
lstJoin2.List(lstJoin2.ListCount - 1, 6) = lstJoin1.List(lstJoin1.ListIndex, 6)
lstJoin2.List(lstJoin2.ListCount - 1, 7) = ""
lstJoin2.List(lstJoin2.ListCount - 1, 8) = ""
lstJoin2.List(lstJoin2.ListCount - 1, 9) = ""
strJoin = lstJoin1.List(lstJoin1.ListIndex, 0)
'Zeile in der linken Box entfernen:
lstJoin1.RemoveItem (lstJoin1.ListIndex)
Call sortiereBox(lstJoin2, 10, 1, 1, 1)
For i = 0 To lstJoin2.ListCount - 1
If lstJoin2.List(i, 0) = strJoin Then Exit For
Next i
lstJoin2.ListIndex = i
cmdJoinEntfernen.Enabled = True
cmdJoinEntfernenAlle.Enabled = True
cmdJoinAliasFeld.Enabled = True
cmdJoinAliasTabelle.Enabled = True
If lstJoin1.ListCount > 0 Then
cmdJoinHinzu.Enabled = True
cmdJoinHinzuAlle.Enabled = True
Else
cmdJoinHinzu.Enabled = False
cmdJoinHinzuAlle.Enabled = False
End If
End If
lblJoin1.Caption = lstJoin1.ListCount
lblJoin2.Caption = lstJoin2.ListCount
Call sqlGenerieren
End If
End Sub
Bekomme ich mit der Testroutine
lstJoin2.List(lstJoin2.ListIndex, 1)

einen Wert ausgespuckt, den es in lstJoin2 gar nicht mehr gibt!

Anzeige
AW: Seltsames Verhalten einer Listbox
03.09.2015 13:57:52
Hendrik
Okay, ich habe es selber gefunden.
Beim Entfernen der Einträge aus der rechten Box muss es nicht
For i = 0 To lstJoin2.ListCount - 1
lstJoin1.AddItem lstJoin2.List(i, 0)
lstJoin1.List(lstJoin1.ListCount - 1, 1) = lstJoin2.List(lstJoin2.ListIndex, 1)
lstJoin1.List(lstJoin1.ListCount - 1, 2) = lstJoin2.List(lstJoin2.ListIndex, 2)
lstJoin1.List(lstJoin1.ListCount - 1, 3) = lstJoin2.List(lstJoin2.ListIndex, 3)

sondern
For i = 0 To lstJoin2.ListCount - 1
lstJoin1.AddItem lstJoin2.List(i, 0)
lstJoin1.List(lstJoin1.ListCount - 1, 1) = lstJoin2.List(i, 1)
lstJoin1.List(lstJoin1.ListCount - 1, 2) = lstJoin2.List(i, 2)
lstJoin1.List(lstJoin1.ListCount - 1, 3) = lstJoin2.List(i, 3)

heißen.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige