ich lese eine (leere) Zelle in eine Variable ein und möchte anschliessend
prüfen ob diese Variable einen Inhalt hat:
x = range("A1")
If Application.WorksheetFunction.IsNumber(x) Then " A1 ist doch nicht leer"
Auch mit isNull oder x="" oder x=Null funktioniert das nicht.
Wie hat sich das der Erfinder von VBA denn vorgestellt?
Ihr wisst sicher weiter.
Gruss Gottfried
na so ähnlich, Du hast es fast getroffen:
Sub Test()
x = Range("A1")
If IsEmpty(x) Then MsgBox "Variable leer"
End Sub
Viele Grüße
Bernd
MVP für Microsoft Excel
Excel-Know-How und Publikationen unter http://held-office.de
"Gottfried Wehr" <gottfri...@mch20.sbs.de> schrieb im Newsbeitrag
news:affadc$o0f$1...@news.mch.sbs.de...
"Gottfried Wehr" <gottfri...@mch20.sbs.de> schrieb im Newsbeitrag
news:affadc$o0f$1...@news.mch.sbs.de...
ich hoffe ich habe dich richtig verstanden, dann prüft folgendes Makro den
Wert in A1:
Sub ZelleAbfragen()
Dim x As Range
Set x = [A1]
If IsEmpty([A1]) Then
MsgBox "Zelle ""A1"" ist leer"
Else
MsgBox "Zelle ""A1"" hat den Wert " & x.Value
End If
End Sub
Hoffe, dass dir das weiterhilft.
mit Gruß
Melanie
XL2000
noch ein Nachtrag:
> >
> ich hoffe ich habe dich richtig verstanden, dann prüft folgendes Makro den
> Wert in A1:
>
> Sub ZelleAbfragen()
> Dim x As Range
> Set x = [A1]
> If IsEmpty([A1]) Then
> MsgBox "Zelle ""A1"" ist leer"
> Else
> MsgBox "Zelle ""A1"" hat den Wert " & x.Value
> End If
> End Sub
>
muss natürlich heissen:
If IsEmpty(x) Then
mit Gruß
Melanie
"Gottfried Wehr" <gottfri...@mch20.sbs.de> schrieb im Newsbeitrag
news:affadc$o0f$1...@news.mch.sbs.de...
> Hallo VBA-Kenner,
>
> ich lese eine (leere) Zelle in eine Variable ein und möchte anschliessend
> prüfen ob diese Variable einen Inhalt hat:
>
> x = range("A1")
> If Application.WorksheetFunction.IsNumber(x) Then " A1 ist doch nicht
leer"
>
> Auch mit isNull oder x="" oder x=Null funktioniert das nicht.
Hm, falls die Anmerkung zu blöd ist, entschuldige bitte, aber Dein Hinweis
'x="" funktioniert nicht' legt nahe, dass Du x als String dimensioniert
hast. (Dabei gehe ich vielleicht fälschlicherweise davon aus, dass Du die
Zeile 'x = range("A1")' durch 'x=""' ersetzt hast, um testweise einen
Null-Wert zu "provozieren".)
Wenn x als String dimensioniert ist kann Dein Code nicht funktionieren, da
ein String niemals IsNumber()=TRUE zurückgeben wird.
Du musst entweder x als Integer, Long, oder was auch immer dimensionieren,
oder Deine Abfrage umformulieren in 'If x="" Then " A1 ist doch nicht leer"'
Der Code von Melanie sollte aber auf jeden Fall funktionieren, weil dort
nicht der Wert der Zelle ausgelesen wird, sondern direkt die Zelle auf
IsNull überprüft wird.
Daher: falls meine Vermutung richtig ist, bitte dieses Posting nur als
Erläuterung der Fehlerursache verstehen, falls meine Vermutung falsch ist,
dieses Posting bitte ungelesen löschen und mich mit wüsten Beschimpfungen
belegen...;-)
--
Schönen Gruß
Michael
michael....@gmx.de
> Wenn x als String dimensioniert ist kann Dein Code nicht funktionieren, da
> ein String niemals IsNumber()=TRUE zurückgeben wird.
> Du musst entweder x als Integer, Long, oder was auch immer dimensionieren,
> oder Deine Abfrage umformulieren in 'If x="" Then " A1 ist doch nicht
leer"'
Die "neue" Abfrage muss natürlich lauten 'If x <>"" Then " A1 ist doch nicht
leer"'.
> Schönen Gruß
> Michael
> michael....@gmx.de
>
>
>
>
Ich habe inzwischen die Lösung selbst rausbekommen: man muss x als variant
und nicht als double definieren! siehe folgendes Beispiel:
Sub ausprobieren()
Dim x As Variant 'mit double kann 0 von leer nicht unterschieden werden
Cells(1, 1).clear
x = Cells(1, 1) 'Zelle "A1"
If Not Application.WorksheetFunction.IsNumber(x) Then MsgBox "x is not
number" 'true
If x = "" Then MsgBox "x = ''" 'true
If IsEmpty(x) Then MsgBox "x is empty" 'true
If IsNull(x) Then MsgBox "x is Null" 'false
If Not IsNumeric(x) Then MsgBox "x is not numeric" 'false
If Application.WorksheetFunction.IsNA(x) Then MsgBox "x is NA" 'false
End Sub
trotzdem noch vielen Dank Melanie und Michael
Gottfried
"Gottfried Wehr" <gottfri...@mch20.sbs.de> schrieb im Newsbeitrag
news:affadc$o0f$1...@news.mch.sbs.de...