batchnewbie
Goto Top

Excel Worksheets markieren per ComboBox

Hallo,
seit paar Tage trette ich auf der stelle, mein Problem ist folgender.
Ich habe eine Excel Datei (.xlsm) mit ein paar Hundert Tabellenblättern. Der Name der Tabellenblätter ist nicht einheitlich (zb. ABC1, Blub1, XYZ2, foobar2 usw. usf.)
Ich habe zwei ComboBox'en beide fülle ich mit den Namen der Tabellenblätter und dann möchte in den Sheets Bereich zwischen ComboBox1 und ComboBox2 markieren, sprich ich wähle in der ComboBox zb. Sheet xyz1 und xyz40 und alle diese Sheets möchte ich markieren.
Für das laden der Beiden ComboBox'en nutze ich folgenden Code:
Private Sub UserForm_Initialize()
Dim i As Integer
        
With Worksheets("ErstesSheet")  

    Me.ComboBox1.Clear
     
        For i = 1 To ThisWorkbook.Worksheets.Count
            
            Me.ComboBox1.AddItem Worksheets(i).Name
        
        Next
     
    Me.ComboBox2.Clear
        
        For i = 1 To ThisWorkbook.Worksheets.Count
        
            Me.ComboBox2.AddItem Worksheets(i).Name
            
        Next
    
End With
End Sub
Jetzt möchte ich per Button, die vorgenommene Auswahl der Tabellenblätter markieren, später Strg + P und Drucken.

Vielleicht kann mir jemand weiterhelfen mit dem fehlenden Puzzle.
Danke

Content-ID: 372756

Url: https://administrator.de/forum/excel-worksheets-markieren-per-combobox-372756.html

Ausgedruckt am: 20.12.2024 um 18:12 Uhr

rubberman
rubberman 02.05.2018 um 20:04:20 Uhr
Goto Top
Private Sub CommandButton1_Click()
Worksheets(Array(ComboBox1.Text, ComboBox2.Text)).Select
End Sub
batchnewbie
batchnewbie 03.05.2018 um 06:29:23 Uhr
Goto Top
Hi, Danke für die Antwort.
Dein Code markiert leider nur die beiden Sheets die man aus der ComboBox auswählt, mir geht darum, dass auch die Sheets die dazwischen liegen mit markiert werden.
136115
136115 03.05.2018 um 08:34:20 Uhr
Goto Top
Hast du dein Problem gelöst?
rubberman
Lösung rubberman 03.05.2018 um 16:08:52 Uhr
Goto Top
Dann musst du dir das Array zusammenstellen. Etwa so:
Private Sub CommandButton1_Click()
    Dim i As Long, idx As Long, arr() As String

    idx = 0
    For i = Worksheets(ComboBox1.Text).Index To Worksheets(ComboBox2.Text).Index
        ReDim Preserve arr(idx)
        arr(idx) = Worksheets(i).Name
        idx = idx + 1
    Next
    Worksheets(arr).Select
End Sub

Steffen
batchnewbie
batchnewbie 03.05.2018 um 18:21:03 Uhr
Goto Top
Dankeschön, genau das habe ich gesucht.

Ich wusste, dass ich es per Array machen muss (geht ja nicht anders), leider habe ich es nicht geschafft diese zu bauen.
Thx