Hallo UweD
Thema: Warum sollte man in Excel-VBA Worksheets statt Sheets nutzen?
Viele VBA-Einsteiger wundern sich, warum es in Excel sowohl Sheets als auch Worksheets gibt. Auf den ersten Blick scheinen beide fast gleich – aber es gibt einen entscheidenden Unterschied, der in der Praxis schnell zu Fehlern führen kann.
1. Unterschied zwischen Sheets und Worksheets
-
Sheets
Enthält alle Blätter in einer Arbeitsmappe. Dazu gehören:
-
Arbeitsblätter (Worksheets)
-
Diagrammblätter (Charts)
-
Historisch auch Makro- und Dialogblätter (heute fast ausgestorben, aber theoretisch möglich)
-
Worksheets
Enthält ausschließlich Arbeitsblätter – also genau die Tabellen, mit denen man meistens arbeiten will. Diagramme oder andere Blatttypen sind hier nicht enthalten.
2. Beispiel, das den Unterschied zeigt
Stell dir vor, du hast in einer Mappe vorne ein Diagrammblatt und dahinter ein Arbeitsblatt. Dann passiert Folgendes:
Sub TestSheetsVsWorksheets()
' Versucht, auf das erste Blatt zuzugreifen
Sheets(1).Cells(1, 1).Value = "Hallo aus Sheets"
' Greift auf das erste Arbeitsblatt zu
Worksheets(1).Cells(1, 1).Value = "Hallo aus Worksheets"
End Sub
-
Sheets(1) → Ist in diesem Fall ein Diagrammblatt.
Versuchst du darauf mit .Cells zuzugreifen, wirft Excel einen Laufzeitfehler:
"Objekt unterstützt diese Eigenschaft oder Methode nicht"
→ Denn Diagrammblätter haben keine Zellen.
-
Worksheets(1) → Ist garantiert ein Arbeitsblatt.
Hier funktioniert der Zugriff auf .Cells ohne Probleme, und der Wert wird sauber eingetragen.
3. Warum also Worksheets bevorzugen?
-
Worksheets ist eindeutiger → du bekommst immer ein Tabellenblatt.
-
Dein Code ist robuster → keine Abstürze, wenn in der Arbeitsmappe ein Diagrammblatt enthalten ist.
-
Nur wenn du bewusst auch Diagrammblätter einbeziehen willst (z. B. beim Durchlaufen aller Blätter), solltest du Sheets nehmen.
4. Best Practice
-
Für typischen VBA-Code mit Tabellen: immer Worksheets verwenden.
-
Nur für Spezialfälle, wo auch Charts etc. behandelt werden sollen: Sheets nutzen.
5. Kurz zusammengefasst
-
Sheets = alle Blätter (Tabellen, Diagramme, etc.)
-
Worksheets = nur Tabellenblätter
-
→ Darum: In 95 % der Fälle ist Worksheets die bessere Wahl.
Willst du, dass ich dir den Forumspost auch gleich mit einem kleinen Hinweis formuliere, wie man im Code robust über alle Blätter iterieren kann (inklusive Abfrage, ob es ein Worksheet oder Chart ist)? Das wäre noch ein schöner Zusatz für Fortgeschrittene.
|