2016-07-22 10 views
0

Ich habe gerade ein siebenseitiges Makro mit zwei UserForms geschrieben, das eine Sache der Schönheit ist. Es gibt zwei Datenbanken und die auf der linken Seite ist länger als die auf der rechten Seite.VBA finden, wie man fängt, wenn es nichts zu finden gibt

Ich benutze eine Variable DDataa1 und die Funktion VBA:

Sub SSearchh() 
... code ... 
Cells.Find(What:=DDataa1, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
... code ... 
End Sub 

Es funktioniert perfekt, außer wenn keine DDataa1 dort zu finden ist. (Das heißt, es gibt keine Variable in der rechten Liste, nach der in der linken Liste gesucht wird.)

In diesem Fall stoppt das Makro einfach. Ich möchte dieses Ereignis "Daten nicht gefunden" erfassen und mehr Code schreiben, der für diesen Fehler spezifisch ist, aber diese Funktion scheint keine Wahr/Falsch-Bedingung zu erzeugen.

Spezifische Unterstützung würde

+0

Also, Sie aktivieren, was Zelle, die Sie gefunden haben. Wenn nichts gefunden wird, weiß Excel nicht, was aktiviert werden soll. Daher der Fehler. Stellen Sie es auf den Bereich ein und prüfen Sie, ob der Bereich nichts ist. 'Not rngGefunden ist nichts' – cyboashu

Antwort

1

geschätzt werden Sie könnten versuchen,

Dim FindRange As Range 
Set FindRange = Cells.Find(What:=DDataa1, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 
If FindRange Is Nothing Then 
    ' do error handling here 
Else 
    FindRange.Activate 
End If