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-Key: 372756

Url: https://administrator.de/contentid/372756

Printed on: April 19, 2024 at 15:04 o'clock

Member: rubberman
rubberman May 02, 2018 at 18:04:20 (UTC)
Goto Top
Private Sub CommandButton1_Click()
    Worksheets(Array(ComboBox1.Text, ComboBox2.Text)).Select
End Sub
Sollte dein Button nicht "CommandButton1" heißen, dann entsprechend anpassen ...

Steffen
Member: batchnewbie
batchnewbie May 03, 2018 at 04:29:23 (UTC)
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.
Mitglied: 136115
136115 May 03, 2018 at 06:34:20 (UTC)
Goto Top
Hast du dein Problem gelöst?
Member: rubberman
Solution rubberman May 03, 2018 at 14:08:52 (UTC)
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
Member: batchnewbie
batchnewbie May 03, 2018 at 16:21:03 (UTC)
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