Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

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"