For-Schleife für Multiselect in Listbox
Betrifft: For-Schleife für Multiselect in Listbox
von: Tom
Geschrieben am: 18.09.2014 09:56:17
Hallo,
Ich habe in einer Userform eine Listbox, die alle Tabellennamen meiner Arbeitsmappe enthält. Diese Tabellennamen sind zusätlich noch mit einem Hyperlink zu einer bestimmten Zelle auf dem jeweiligen Blatt hinterlegt. Klicke ich einen Tabellennamen, wird automatisch im Hintergrund der Userform zu der Zelle gesprungen und das Tabellenblatt somit aktiv.
Anzumerken ist, dass die verlinkten Tabellennamen in einer eigenen Tabelle, nämlich in der letzen der Arbeitsmappe, sind.
Mein Code sieht folgendermaßen aus:
Private Sub ListBox1_Click()
With Me.ListBox1
If .ListIndex <> -1 Then
Sheets(.List(.ListIndex, 0)).Activate
Range(.List(.ListIndex, 1)).Select
End If
End With
End Sub
Das funktioniert soweit sehr gut.
Nun möchte ich aber mehrere Tabellenblätter auf einmal auswählen können. Die Mulitselect Funktion der Listbox funktioniert leider nicht, da ja nicht mehrere Tabellenblätter auf einmal aktiv sein können.
Deswegen möchte ich die die Listbox mit einer For-Schleife durchgehen, mit der geprüft wird, welche Tabellenblätter ausgewählt sind und diese dann nacheinander aktiviert und somit bearbeitet werden können. Ich möchte einfach nicht jedes Tabellenblatt einzeln anklicken müssen.
Mein aktueller Code dazu sieht so aus:
With Me.ListBox1
For x = .ListCount - 1 To 0 Step -1
wert_neu = eingabe
If .Selected(x) = True Then 'also wenn Häckchen gesetzt ist dann ...
Sheets(.List(.ListIndex, 0)).Activate
Range(.List(.ListIndex, 1)).Select
End If
Befehle zur Bearbeitung
Next x
End With
Von den ausgewählten Tabellenblättern wird meistens nur das erste oder das erste und das letzte bearbeitet.
Was mache ich falsch?
Danke schon mal!
Gruß,
Tom
Betrifft: AW: For-Schleife für Multiselect in Listbox
von: Rudi Maintaire
Geschrieben am: 18.09.2014 10:19:33
Hallo,
Was mache ich falsch?
Du muss Blätter/ Zellen nicht aktivieren um damit zu arbeiten.
Aber wenn du unbedingt willst:
Sheets(.List(x, 0)).Activate
Range(.List(x, 1)).Select
Gruß
Rudi
Betrifft: AW: For-Schleife für Multiselect in Listbox
von: Tom
Geschrieben am: 18.09.2014 10:43:05
Vielen Dank, Rudi! Jetzt funktionierts.
In meinem Fall muss das Blatt/Zelle schon aktiv sein, da die Userform immer nur das aktive Sheet anspricht.
Gruß,
Tom
Betrifft: AW: For-Schleife für Multiselect in Listbox
von: Rudi Maintaire
Geschrieben am: 18.09.2014 10:46:14
Hallo,
da die Userform immer nur das aktive Sheet anspricht
das kann man aber auch anders machen.
Gruß
Rudi
Beiträge aus den Excel-Beispielen zum Thema "For-Schleife für Multiselect in Listbox"