Moin,
dazu riskieren wir einen Blick in die Onlinehilfe (OH). [Empfehlung: Setze Dich stets mit der OH auseinander, auch wenns nicht immer aufschlussreich ist. Meine Meinung ;)]
https://docs.microsoft.com/de-de/office/vba/api/excel.range.find
Beachte die Passage mit dem Rückgabewert. Die Find-Methode() liefert ein Range-Objekt(), besser gesagt, eine Referenz zu einer Zelle, wenn diese Methode etwas findet.
Wenn sie nichts findet, liefert diese Methode folglich keine Referenz. Wenn Du keine Referenz bekommst, aber Dein Code davon ausgeht und munter auf Methoden/Eigenschaften eine Range-Objektes zugreifen möchte, dann führt das zu einem Laufzeitfehler.
Das umgehen wir, indem wir zuvor prüfen, ob eine Referenz vorhanden ist oder nicht. Deshalb: IF Objektvariable Is Nothing
Objektvariablen sind Nothing, wenn diese nicht initialisiert/gesettet sind. Gilt also generell; nicht nur für Range, sondern alle. Das Schlüsselwort zum initialisieren wäre SET. Oder eine Methode erzeugt Dir eine; wie in unserem Fall die Finde-Methode()
An dieser Stelle ein weiterer Link: www.vba-tutorial.de
Also nochmal:
Du settest die Objektvariable finden und prüfst im Anschluss, ob finden Nothing ist oder nicht. Und ein ELSE-Zweig KANN ausgeführt werden, muss nicht.
set finden = Range....find(...
If Not finden Is Nothing Then
'Wertzuweisungen können stattfinden, da wir eine Referenz bekommen haben
Else
'Hier können wir etwas unternehmen, wenn wir keine Referenz bekommen haben.
'Müssen aber nicht; entscheidet der Entwickler; toll nicht?
End If
Sag bescheid, wenn Du was brauchst.
gruß
Marco
|