Problemstellung
In meiner täglichen Arbeit mit Excel stoße ich oft auf Tabellen, in denen nicht alle Zellen befüllt sind. Das kann schnell zu Problemen führen, besonders wenn diese leeren Zellen wichtige Daten enthalten sollten. Um diese Zeilen leichter zu identifizieren, ist es hilfreich, sie farblich hervorzuheben. Während die bedingte Formatierung in Excel eine Möglichkeit bietet, möchte ich zeigen, wie man dies effektiv mit VBA erreichen kann.
Ansatz
Es gibt verschiedene Szenarien, in denen Zeilen hervorgehoben werden sollen:
- Wenn eine bestimmte Spalte leer ist.
- Wenn die gesamte Zeile leer ist.
- Wenn mindestens eine Zelle in der Zeile leer ist.
Wenn eine bestimmte Spalte leer ist

Public Sub HighlightRowIfSpecificColumnIsEmpty(columnToCheck) | |
Dim myRange As Range | |
Dim row As Range | |
Dim columnToCheck As Integer | |
# columnToCheck = 2 ' Spalte B (ändere dies nach Bedarf) | |
' Definiere den Bereich, der geprüft werden soll | |
Set myRange = ActiveSheet.UsedRange | |
' Durchlaufe jede Zeile im Bereich | |
For Each row In myRange.Rows | |
If IsEmpty(row.Cells(1, columnToCheck).Value) Then | |
' Hervorheben der gesamten Zeile | |
row.Interior.Color = RGB(255, 255, 0) ' Gelb | |
Else | |
' Entferne Hervorhebung, falls vorhanden | |
row.Interior.ColorIndex = xlNone | |
End If | |
Next row | |
End Sub |
Wenn die gesamte Zeile leer ist

Public Sub HighlightRowIfEntireRowIsEmpty() | |
Dim myRange As Range | |
Dim row As Range | |
' Definiere den Bereich, der geprüft werden soll | |
Set myRange = ActiveSheet.UsedRange | |
' Durchlaufe jede Zeile im Bereich | |
For Each row In myRange.Rows | |
If Application.CountA(row) = 0 Then | |
' Hervorheben der gesamten Zeile | |
row.Interior.Color = RGB(255, 255, 0) ' Gelb | |
Else | |
' Entferne Hervorhebung, falls vorhanden | |
row.Interior.ColorIndex = xlNone | |
End If | |
Next row | |
End Sub |
Wenn mindestens eine Zelle in der Zeile leer ist

' Hervorheben von Zeilen, in denen mindestens eine Zelle leer ist | |
Public Sub ZeilenMitLeerenZellenHervorheben() | |
' Ermitteln der letzten Zeile und Spalte mit Inhalt | |
Dim myRows As Long | |
myRows = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row | |
Dim myColumns As Long | |
myColumns = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column | |
' Definieren des zu prüfenden Bereichs | |
Dim myRange As Range | |
Set myRange = Range(ActiveSheet.Cells(2, 1), ActiveSheet.Cells(myRows, myColumns)) | |
' Umwandlung der Spaltennummer in Buchstaben | |
Dim ColumnLetter1 As String | |
Dim ColumnLetter2 As String | |
ColumnLetter1 = ConvertToColumnLetter(1) | |
ColumnLetter2 = ConvertToColumnLetter(myColumns) | |
' Hinzufügen der bedingten Formatierung | |
Dim oFC As FormatCondition | |
Set oFC = myRange.FormatConditions.Add(Type:=xlExpression, Formula1:= _ | |
"=COUNTBLANK($" & ColumnLetter1 & "2:$" & ColumnLetter2 & "2)<>0") | |
' Festlegen der Formatierungsregeln | |
With oFC.Interior | |
.PatternColorIndex = xlAutomatic | |
.Color = 65535 ' Gelb | |
.TintAndShade = 0 | |
End With | |
' Weiterführen der Prüfung trotz Übereinstimmung | |
oFC.StopIfTrue = False | |
End Sub |
Was macht dieser Code?
Dieser Code durchläuft jede Zeile in einem definierten Bereich der Excel-Tabelle. Wenn in einer Zeile mindestens eine Zelle leer ist, wird diese Zeile gelb hervorgehoben. Der Code verwendet die Funktion COUNTBLANK
in einer bedingten Formatierungsregel, um leere Zellen zu zählen.