ich habe folgendes Problem.
Dim tmp as Range
On Error Resume Next
set tmp = Worksheets(1).Cells.find (What:="irgendwas")
Nun will ich überprüfen ob tmp ein Range-Objekt enthält oder nicht (Nothing). Wie kann ich das anstellen?
Gruß
Chris
Sub SUCHEN()
Dim tmp As Range
Set tmp = Worksheets(1).Cells.Find(What:="irgendwas")
If Not tmp Is Nothing Then
MsgBox "Gefunden " & tmp.Address
Else
MsgBox "Nix gefunden"
End If
End Sub
Um zu prüfen, ob ein Range-Objekt in Excel VBA Nothing
ist, kannst Du die folgende Methode verwenden:
Range
.Set
-Anweisung, um das Range-Objekt zu initialisieren (z.B. mit der Find
-Methode).If
-Anweisung, ob das Range-Objekt Nothing
ist.Hier ist ein Beispiel für den Code:
Sub SUCHEN()
Dim tmp As Range
On Error Resume Next
Set tmp = Worksheets(1).Cells.Find(What:="irgendwas")
On Error GoTo 0
If Not tmp Is Nothing Then
MsgBox "Gefunden " & tmp.Address
Else
MsgBox "Nix gefunden"
End If
End Sub
In diesem Code wird tmp
gesetzt, und anschließend wird geprüft, ob tmp
ein gültiges Range-Objekt ist oder nicht.
Fehler: "Typen nicht kompatibel"
tmp
als Range
deklariert ist und dass die Find
-Methode erfolgreich ist.Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"
Set
-Anweisung korrekt verwendet hast und dass die Find
-Methode nicht Nothing
zurückgibt.Fehler: On Error Resume Next
führt zu unerwartetem Verhalten
On Error GoTo 0
, um den Fehlerbehandlungsmodus zu deaktivieren, sobald Du den Fehler abgefragt hast.Eine alternative Methode, um zu prüfen, ob ein Range-Objekt Nothing
ist, wäre die Verwendung der IsNothing
-Funktion, die jedoch nicht nativ in VBA existiert. Du könntest jedoch eine eigene Funktion erstellen:
Function IsNothing(rng As Range) As Boolean
IsNothing = rng Is Nothing
End Function
Dann kannst Du diese Funktion wie folgt verwenden:
If IsNothing(tmp) Then
MsgBox "Nix gefunden"
Else
MsgBox "Gefunden " & tmp.Address
End If
Hier sind einige Beispiele, wie Du auf Nothing
prüfen kannst:
Überprüfung nach einer Suche:
Dim result As Range
Set result = Worksheets(1).Cells.Find("Suchbegriff")
If result Is Nothing Then
MsgBox "Der Suchbegriff wurde nicht gefunden."
End If
Überprüfung eines benutzerdefinierten Bereichs:
Dim customRange As Range
Set customRange = Worksheets(1).Range("A1:A10")
If customRange Is Nothing Then
MsgBox "Der Bereich ist leer."
End If
If Not ... Is Nothing Then
, um sicherzustellen, dass Dein Range-Objekt gültig ist, bevor Du darauf zugreifst.On Error Resume Next
mit Bedacht; es kann die Fehlersuche erschweren, wenn Du nicht genau weißt, wo der Fehler auftritt.Nothing
. Überprüfe immer, ob das Objekt tatsächlich existiert.1. Wie kann ich überprüfen, ob ein Bereich leer ist?
Du kannst die Count
-Eigenschaft verwenden:
If customRange.Cells.Count = 0 Then
MsgBox "Der Bereich ist leer."
End If
2. Was passiert, wenn ich Set tmp = Nothing
verwende?
Das setzt die Variable tmp
auf Nothing
, was bedeutet, dass sie auf kein Objekt verweist. Dies ist nützlich, um sicherzustellen, dass eine Variable nicht mehr verwendet wird.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen