jetzt habe ich eine für mich gesehen spezielle Frage.
Ich habe eine UF mit zwei Listboxes. Ist es möglich, dass diese synchron gescrollt werden können?
Besten Dank für Eure Hilfe.
Gruss
Peter
Private nFocus As Long
Private Sub CommandButton1_Click()
For X = 1 To 300
ListBox1.AddItem "abc " & Rnd()
ListBox2.AddItem "abc " & Rnd()
Next X
Do While UserForm1.Visible
DoEvents
If nFocus = 1 Then
ListBox2.TopIndex = ListBox1.TopIndex
ElseIf nFocus = 2 Then
ListBox1.TopIndex = ListBox2.TopIndex
End If
Loop
End Sub
Private Sub ListBox1_Enter()
nFocus = 1
End Sub
Private Sub ListBox2_Enter()
nFocus = 2
End Sub
Private nFocus As Long
Private Sub ListBox1_Enter()
nFocus = 1
End Sub
Private Sub ListBox2_Enter()
nFocus = 2
End Sub
Private Sub UserForm_Activate()
Do While UserForm1.Visible
DoEvents
If nFocus = 1 Then
ListBox2.TopIndex = ListBox1.TopIndex
ElseIf nFocus = 2 Then
ListBox1.TopIndex = ListBox2.TopIndex
End If
Loop
End Sub
Gruß WernerUm zwei Listboxes in einer Userform synchron scrollen zu lassen, kannst Du den folgenden VBA-Code verwenden:
Private nFocus As Long
Private Sub CommandButton1_Click()
For X = 1 To 300
ListBox1.AddItem "abc " & Rnd()
ListBox2.AddItem "abc " & Rnd()
Next X
End Sub
Private Sub ListBox1_Enter()
nFocus = 1
End Sub
Private Sub ListBox2_Enter()
nFocus = 2
End Sub
Private Sub UserForm_Activate()
Do While UserForm1.Visible
DoEvents
If nFocus = 1 Then
ListBox2.TopIndex = ListBox1.TopIndex
ElseIf nFocus = 2 Then
ListBox1.TopIndex = ListBox2.TopIndex
End If
Loop
End Sub
Fehler: Listboxen scrollen nicht synchron.
UserForm_Activate
-Ereignis korrekt implementiert ist und dass nFocus
richtig gesetzt wird, wenn Du in die Listboxes klickst.Fehler: Userform friert ein.
DoEvents
korrekt verwendet wird, um die Benutzeroberfläche nicht zu blockieren.Eine alternative Methode, um die Daten in den Listboxes zu verwalten, wäre die Verwendung einer mehrspaltigen ListBox. Hierbei kannst Du die Daten in einer einzigen ListBox anzeigen, was möglicherweise stabiler und einfacher zu handhaben ist:
ColumnCount
auf die Anzahl der Spalten ein.RowSource
-Eigenschaft nutzt.Wenn Du eine Tabelle mit vielen Spalten hast, wie in Peters Beispiel mit 41 Spalten, kannst Du die Daten in einer mehrspaltigen ListBox anzeigen. Dies könnte so aussehen:
ListBox1.RowSource = "A1:U100"
ListBox2.RowSource = "A1:AO100"
Hiermit füllst Du die beiden Listboxes in der Userform direkt mit Daten aus einem Excel-Arbeitsblatt.
With...End With
, um den Code effizienter zu gestalten, wenn Du mehrere Eigenschaften einer ListBox bearbeiten möchtest.1. Wie kann ich die Listboxes mit einer Tabelle verknüpfen?
Um eine ListBox mit einer Tabelle zu verknüpfen, kannst Du die RowSource
-Eigenschaft verwenden, um einen Bereich in der Tabelle anzugeben.
2. Kann ich die Listboxes auch in einer Excel-Version vor 2016 verwenden? Ja, der bereitgestellte VBA-Code funktioniert auch in früheren Versionen von Excel, solange die Userform und ListBoxen vorhanden sind.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen