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

Range Object auf Nothing prüfen

Forumthread: Range Object auf Nothing prüfen

Range Object auf Nothing prüfen
24.10.2005 09:29:17
Christian
Hallo,
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
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range Object auf Nothing prüfen
24.10.2005 09:37:07
Heiko
Moin Christian,
z.B. so:

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

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Range Object auf Nothing prüfen
24.10.2005 09:43:27
Christian
Super, Danke - funktioniert
Da hätt ich auch selber drauf kommen können

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Range Object auf Nothing prüfen in Excel VBA


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Range-Objekt in Excel VBA Nothing ist, kannst Du die folgende Methode verwenden:

  1. Deklariere eine Variable vom Typ Range.
  2. Verwende die Set-Anweisung, um das Range-Objekt zu initialisieren (z.B. mit der Find-Methode).
  3. Überprüfe mit einer 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.


Häufige Fehler und Lösungen

  1. Fehler: "Typen nicht kompatibel"

    • Lösung: Stelle sicher, dass die Variable tmp als Range deklariert ist und dass die Find-Methode erfolgreich ist.
  2. Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Überprüfe, ob Du die Set-Anweisung korrekt verwendet hast und dass die Find-Methode nicht Nothing zurückgibt.
  3. Fehler: On Error Resume Next führt zu unerwartetem Verhalten

    • Lösung: Verwende On Error GoTo 0, um den Fehlerbehandlungsmodus zu deaktivieren, sobald Du den Fehler abgefragt hast.

Alternative Methoden

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

Praktische Beispiele

Hier sind einige Beispiele, wie Du auf Nothing prüfen kannst:

  1. Ü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
  2. Ü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

Tipps für Profis

  • Verwende If Not ... Is Nothing Then, um sicherzustellen, dass Dein Range-Objekt gültig ist, bevor Du darauf zugreifst.
  • Nutze On Error Resume Next mit Bedacht; es kann die Fehlersuche erschweren, wenn Du nicht genau weißt, wo der Fehler auftritt.
  • Denke daran, dass ein leeres Range-Objekt nicht dasselbe ist wie Nothing. Überprüfe immer, ob das Objekt tatsächlich existiert.

FAQ: Häufige Fragen

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.