Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden

Forumthread: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden

Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 12:16:48
Macfly123
Hallo zusammen,

ich möchte wie schon beschrieben, die Anzahl der leere Zellen in einen Bereich zählen aber nur in den sichtbaren Zeilen.
Mein Code sieht bisher wie folgt aus:



Sub auswahl()

Dim k As Range
Set k = Range("A2:A10")

If Not WorksheetFunction.CountIf(k, "") > 0 Then
MsgBox "Kein Platz mehr"
End If

End Sub


Ich durchsuche mit dem Code einen Bereich ob dort leere Zellen vorhanden sind. Wenn nicht, dann gib die Message aus.
Er durchsucht in meinem Beispiel aber auch die ausgeblendeten Zeilen, was ich aber nicht möchte.
Wie kann ich den Code anpassen um ausgeblendeten Zeilen zu ignorieren?
Danke und Gruß, Mac
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 12:35:11
peter
Hallo

Set k = Range("A2:A10").SpecialCells(xlCellTypeVisible)

Wenn aber alle Zellen des Bereichs ausgeblendet sind, kommt es zu einer Fehlermeldung.

Peter
AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 12:35:59
daniel
Hi
in dem fall am sichersten so:

dim c as range

dim k as range
im z as long
set k = Range("A2:A10")

for each c in k.cells
if not c.entirerow.hidden then if c.value = "" then z = z + 1
next
if z = 0 then
msgbox "kein platz"
end if


gruß Daniel
Anzeige
AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 12:42:57
UweD
Hallo


So?

Sub auswahl()


Dim k As Range
Dim kVisible As Range
Dim emptyCells As Range
Dim countEmpty As Long
Set k = Range("A2:A10")

' Nur sichtbare Zellen im Bereich auswählen
On Error Resume Next ' Falls keine sichtbaren Zellen vorhanden sind
Set kVisible = k.SpecialCells(xlCellTypeVisible)
On Error GoTo 0


If Not kVisible Is Nothing Then
' Nur die leeren sichtbaren Zellen zählen
On Error Resume Next ' Falls keine leeren Zellen vorhanden sind
Set emptyCells = kVisible.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not emptyCells Is Nothing Then
countEmpty = emptyCells.Count
Else
countEmpty = 0
End If
Else
countEmpty = 0
End If


If countEmpty = 0 Then
MsgBox "Kein Platz mehr"
End If

End Sub


LG UweD
Anzeige
AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 12:57:17
daniel
Hi
peters Idee mal zu Ende gedacht:

Dim rngLeer As Range

On Error Resume Next
Set rngLeer = Range("A2:A10").SpecialCells(xlCellTypeBlanks).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rngLeer Is Nothing Then
MsgBox "keine leeren Zellen vorhanden"
Else
MsgBox "leere Zellen: " & rngLeer.Cells.Count & vbLf & rngLeer.Address(0, 0)
End If


einschränkungen: die Zellen müssen echte Leerzellen sein (kein Text "")
der Ausgangsbereich (A2:A10) muss bereits teil der Usedrange sein (tatsächlich genutzter Zellbereich im Tabellenblatt), da die Specialcells maximal die Usedrange auswerten.

gruß Daniel
Anzeige
AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 14:56:21
Macfly123
Was genau meinst du mit Usedrange?

Wenn alle Zellen ein Zeichen beinhalten (es geht um "x") kommt der Laufzeitfehler 424 "Objekt erforderlich"
Wenn eine Zelle ausgeblendet und leer ist, kommt ein Laufzeitfehler 6 "Überlauf".
Woran kann das liegen?

AW: Suche von leeren Zellen nur auf eingeblendet Zeilen anwenden
10.01.2025 15:06:14
daniel
usedrange ist der Bereich des Tabellenblatts, mit dem Excel tatsächlich arbeitet.
das ist ein recheteckiger Zellbereich, der alle Zellen umfasst, die einen Inhalt oder eine Formatierung haben.
die letzte Zelle der UsedRange findest du mit STRG+ENDE

zu deinen Fehlermeldungen: die kann ich nicht nachstellen.
auch wenn ich überall ein "x" reinschreibe, bekomme ich mit meinem Marko keine Fehlermeldung.
"Überlauf" ist eine Fehlermeldung einer Formel in einer Excelzelle und kann daher nicht im Zusammenhang mit diesem Makro auftreten.
du machst was ganz anderes, was nichts mit meinem Marko zu tun hat.
Lade bitte mal die Datei hoch, damit ich mir deinen Fehler anschauen kann.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige