In Excel ist das Auswählen aller sichtbaren Arbeitsblätter so einfach wie das Klicken mit der rechten Maustaste auf eine beliebige Blattregisterkarte und die Auswahl aller Blätter auswählen. Es ist jedoch schwieriger, dieselbe Aufgabe mit VBA-Code auszuführen.

In der Online-Hilfe von Excel wird empfohlen, die Array-Funktion mit der Sheets-Auflistung zu verwenden, um Blätter nach Namen auszuwählen. Dies funktioniert hervorragend, wenn Sie die Namen der einzelnen Blätter in der Arbeitsmappe kennen. Dies stellt ein Problem dar, wenn Sie generischen Code erstellen möchten, um alle Blätter für eine Arbeitsmappe auszuwählen. Die gute Nachricht ist, dass Sie eine Variante der Microsoft-Technik verwenden können, um Blätter nach Indexnummer zu referenzieren. Unten ist der Code:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     For i = 1 To Sheets.Count         ReDim Preserve myArray(i - 1)

myArray(i - 1) = i     Next i     Sheets(myArray).Select End Sub

Dies funktioniert hervorragend, es sei denn, die Arbeitsmappe enthält versteckte Blätter, wobei Blätter (i) .Visible = False sind. Natürlich kann der obige Code angepasst werden, um versteckte Arbeitsblätter zu ignorieren:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     Dim j As Integer     j = 0     For i = 1 To Sheets.Count         If Sheets(i).Visible = True Then             ReDim Preserve myArray(j)

myArray(j) = i             j = j + 1         End If     Next i     Sheets(myArray).Select End Sub

Es gibt jedoch einen wenig bekannten Parameter der Select-Methode: den Replace-Parameter. Mit dem Ersetzen-Parameter wird die Auswahl aller sichtbaren Blätter viel einfacher:

Sub SelectSheets1()

Dim mySheet As Object     For Each mySheet In Sheets         With mySheet             If .Visible = True Then .Select Replace:=False         End With     Next mySheet End Sub

Beachten Sie, dass mySheet als Objektdatentyp anstelle eines Arbeitsblattdatentyps definiert ist. Dies geschieht, weil beim Testen ein Problem mit Diagrammblättern aufgetreten ist. Sie wurden nicht ausgewählt, da sie nicht vom Typ Arbeitsblatt waren.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (3058) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: