Michael hat ein Makro, das eine Reihe von Arbeitsblättern druckt. Gelegentlich enthalten ein oder zwei der zu druckenden Arbeitsblätter möglicherweise keine Daten. Er sucht nach einer Technik, um zu testen, ob ein Arbeitsblatt Daten enthält, und dann nur diese Arbeitsblätter zu drucken.

Es gibt verschiedene Möglichkeiten, ein leeres Arbeitsblatt zu testen.

Natürlich hängt es davon ab, was Sie wirklich mit „leer“ meinen, zumindest bis zu einem gewissen Grad. Wenn ein Arbeitsblatt beispielsweise absolut nichts enthält – nichts in einer Zelle des Arbeitsblatts -, können wir es als leer betrachten.

Möglicherweise verfügen Sie jedoch über ein Arbeitsblatt, das einige von Ihnen hinzugefügte Spaltenüberschriften enthält, jedoch nur diese Überschriften. Während Excel das Arbeitsblatt als nicht leer betrachtet, können Sie es für Druckzwecke als leer betrachten.

Der einfachste Weg, um zu überprüfen, ob ein Arbeitsblatt leer ist, besteht darin, mithilfe des UsedRange-Objekts zu bestimmen, was im Arbeitsblatt enthalten ist:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=1 _   AND ActiveSheet.UsedRange.Columns.Count=1 _   AND Cells(1,1).Value=""

Beachten Sie, dass das UsedRange-Objekt aus dem Bereich der verwendeten Zellen in einem Arbeitsblatt besteht. Wenn also die Anzahl der Zeilen in diesem Bereich 1 und die Anzahl der Spalten in diesem Bereich 1 beträgt und sich in Zelle A1 nichts befindet, ist das Arbeitsblatt wahrscheinlich leer.

Wenn Ihr Arbeitsblatt eine Kopfzeile (oder zwei) enthält, können Sie diese Technik an die Zeilen und Spalten anpassen, die in diesen Kopfzeilen enthalten sind. Wenn Sie beispielsweise Überschriften im Bereich A1: F4 haben, können Sie die Technik folgendermaßen anpassen:

IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=4 _   AND ActiveSheet.UsedRange.Columns.Count=6

In diesem Fall müssen Sie den Inhalt von A1 nicht überprüfen, da Sie bereits wissen, dass es (und mehrere andere Zellen) Informationen enthält – Ihre Header. Sie möchten einfach alles in diesen Kopfzeilen ignorieren, um festzustellen, ob das Arbeitsblatt zusätzliche Informationen enthält.

Wenn das Arbeitsblatt vollständig leer ist (keine von Ihnen hinzugefügten Header-Informationen), können Sie die Zellen im Arbeitsblatt mit der CountA-Arbeitsblattfunktion analysieren. Wenn das Ergebnis der Funktion größer als Null ist, ist das Arbeitsblatt nicht leer. Angenommen, das Arbeitsblatt, das Sie analysieren möchten, wird durch das Objekt sht angegeben. Sie können diese Technik folgendermaßen verwenden:

IsSheetEmpty = Application.WorksheetFunction.CountA(sht.Cells) = 0

Natürlich kann ein Arbeitsblatt andere Elemente als Informationen in Zellen enthalten. Wenn Sie den Verdacht haben, dass diese Art von Objekten in einem Arbeitsblatt enthalten ist (z. B. AutoFormen, Grafiken oder eingebettete Diagramme), müssen Ihre Tests auf „Leere“ vollständiger sein. Jedes dieser Elemente ist in Sammlungen enthalten, auf die in VBA zugegriffen werden kann, und Sie können die Count-Eigenschaft für jede Sammlung überprüfen, um festzustellen, ob sie Null ist oder nicht.

_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 (3280) 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: