Auswählen aller sichtbaren Arbeitsblätter in einem Makro (Microsoft Excel)
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: