VBA EXCEL Bereich prüfen, ob 'frei/leer'

Hallo WWW-Helfer,

wie prüfe ich einen Bereich (Bsp: D11:K22), ob dieser „leer“ ist, d.h. keine Texte, keine Formeln, keine Zahlen, keine Bilder oder sonstiges d’rinstehen.
Ich hab’s versucht mit ISEMTY, ISNULL und ISNOTHING.
Kein Erfolg (VBA: V öllig B löder A nwender).

Sheets("Tabelle1").Select
' X1,Y1 mit der Frank-Kabel-Formel veränderliche Zeilennummern 1-65536
Range("D" & Range("X1")+4, "K" & Range("Y1")+14).Select
If selection(ISEMTY bzw. ISNOTHING bzw. ISNULL) then

else if

end if

oder mit

If Range("D" & Range("X1") + 4) & ":" & Range("K" & Range("Y1") + 14) = Null bzw. EMPTY bzw. NOTHING Then

Bitte : Ich bin absoluter VBA-Neuling. Darum bitte keinen unverständlichen Experten-Denglish-Slang.

Und wenn ich schon mal dabei bin, Fragen zu stellen:

Wie geht in RANGE eine Auflistung von Spalten, Zeilen und Zellen?

Range("C:C , L:L, R:W").Columns.Hidden = True

[geht mit Makro-Recorder, im Makro falsche Ausführung]

Range("5:5 , 10:11, 20:30").Rows.Hidden = True



Range(Cells(2,3), Cells(6,9), Cells(11,23), ... , ...).Select

Ich hoffe auf viele qualifizierte Antworten mit Erklärungen.

Danke Manne

Hi Manne,

wie prüfe ich einen Bereich (Bsp: D11:K22), ob dieser „leer“
ist, d.h. keine Texte, keine Formeln, keine Zahlen, keine
Bilder oder sonstiges d’rinstehen.

Ein Bereich enthält Zellen, keine Bilder.

Sub tt4()
If Application.WorksheetFunction.CountA(Range("D11:K22")) = 0 Then
 'Anweisungen
Else
 'Anweisungen
End If
End Sub

Bilder „schweben“ über Zellen, d.h. keine Zelle weiß ob über ihr ein Bild „schwebt“. Insofern kannst du keien Zelle nach einem Bild befragen.

Du mußt in einer Schleife alle Bilder durchgehen und einzeln abprüfen über welchen Zellen sie denn schweben und dann diese ermittelten Zellen abprüfen ob sie im Bereich D11:K22 liegen.
Da dis leicht aufwendig wird stellt sich die Frage obs denn unbedingt notwendig ist.

Ich hab’s versucht mit ISEMTY, ISNULL und ISNOTHING.
Kein Erfolg (VBA: V öllig

CountA für einen Zellenbereich ist schneller als jede zelle ds bereichs einzeln abzuprüfen mit Isempty usw.

Ansonsten in der Art:

Sub tt5()
Dim Zelle As Range, Leer As Boolean
Leer = True
For Each Zelle In Range("D11:K22")
 If Not IsEmpty(Zelle) And Not IsNull(Zelle) And Not Zelle = "" Then
 Leer = False
 Exit For
 End If
Next Zelle
If Leer = True Then
 MsgBox "leer"
Else
 MsgBox "nicht leer"
End If
End Sub

Sheets(„Tabelle1“).Select
’ X1,Y1 mit der Frank-Kabel-Formel veränderliche Zeilennummern
1-65536

sieht nach Excelformeln.de aus, weiß aber nicht den Bezug zu deiner Frage.

Wie geht in RANGE eine Auflistung von Spalten, Zeilen und
Zellen?
Range(„C:C , L:L, R:W“).Columns.Hidden =True

Range(„C:C , L:L, R:W“).EntireColumn.Hidden = True

Range(„5:5 , 10:11, 20:30“).Rows.Hidden =True

Range(„5:5 , 10:11, 20:30“).Rows.Hidden = True

Range(Cells(2,3), Cells(6,9), Cells(11,23)).Select

Range(Cells(2,3).Address, Cells(6,9).Address, Cells(11,23).Address).Select

Geht vielleicht auch anders, weiß grad nich.

Gruß
Reinhard

Hi Reinhard,

danke für die prompte Antwort.

Sub tt4() + Sub tt5() funktionieren auch mit meinen Modifikationen auf Anhieb.

Mit Bilder oder Sonstiges meinte ich Hyperlinks auf Bilder oder Audio-Dateien.

sieht nach Excelformeln aus

Frank-Kabel-Formel : VERWEIS(2;1/($X$1:blush:X$10000"");ZEILE(X:X))

Range(Cells(2,3).Address, Cells(6,9).Address,Cells(11,23).Address).Select

funktioniert leider nicht
„Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft“

Gruß Manne

Range(Cells(2,3).Address, Cells(6,9).Address,Cells(11,23).Address).Select

funktioniert leider nicht

Hi Manne,

da hatte ich es wohl nur mit 2 Cells-Behelen in einer Range-Klammer probiert, da klappt es.

Ich war sowieso irritiert daß da 3 Cells-befehle in einer Range-Klammer waren, sah ich noch nie, jetzt weiß ich auch warum, das geht nicht :smile:

Range akzeptiert maximal 2 Cells-Befehle in der Klammer, stehen sie drin bildet Range daraus einen zusammenhängenden Bereich.

Insofern sind hier beide Codezeilen gleich in der Auswirkung, als kann man sich das Address sparen:

Sub tt()
Range(Cells(2, 3).Address, Cells(6, 9).Address).Select
Range(Cells(2, 3), Cells(6, 9)).Select
End Sub

Selektiert wird in beiden Fällen der komplette Zellbereich C2:i6

Du willst aber drei zellen markieren, dann so:

Sub tt2()
Dim Bereich
Set Bereich = Cells(2, 3)
Set Bereich = Union(Bereich, Cells(6, 9), Cells(23, 12))
Bereich.Select
End Sub

und Bereich muß vorher auf eine Zelle/Zellenbereich ge"SET"zt werden sonst klappt Union nicht, dieses da klappt also nicht:

Sub tt2()
Dim Bereich
Set Bereich = Union(Cells(2, 3), Cells(6, 9), Cells(23, 12))
Bereich.Select
End Sub

Gruß
Reinhard

Hallo Reinhard,

danke für die Antwort. Es ist wichtig zu wissen was geht. Genauso wichtig ist es zu wissen was nicht geht!
Jetzt bin ich etwas klüger.
Bis zur nächsten Frage. Und davon habe ich viele (dumme und komplizierte).

Gruß Manne