On error GOTO-Anweisung in VBA
Habe ich in diesem code zu finden, der einen bestimmten Wert in ein excel-Blatt mithilfe der Tastenkombination Strg+F Befehl , aber wenn Sie den code nicht finden, was ich will, es zu werfen, eine Nachricht.
sub test()
f=5
do until cells(f,1).value=""
On Error goto hello
Cells.Find(what:=refnumber, After:=ActiveCell, LookIn:=xlFormulas, _
lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
f=f+1
hello: Msgbox"There is an error"
loop
endsub
Das problem ist, dass selbst wenn keine Fehler gefunden wird die Nachricht noch immer angezeigt. Ich will die Nachricht, die box wird nur angezeigt, wenn ein Fehler aufgetreten ist.
Verwenden
ok was ist wenn ich mehrere von solchen Bedingungen , wie VB wissen, welche irren.die Nummer gehört zu welchem Zustand
Err.Number
Beispiel: If Err.Number <> 0 then Msgbox"There is an error"
ok was ist wenn ich mehrere von solchen Bedingungen , wie VB wissen, welche irren.die Nummer gehört zu welchem Zustand
Err
- Objekt enthält Informationen über die Laufzeit-Fehler. Die Eigenschaften von Err
Objekt gefüllt werden, wenn ein Fehler ocures. Also die Err
Objekt doen nicht gehören zu jeder Bedingung, es nur informiert, wenn Fehler aufgetreten ist oder nicht. Sehen Err.Clear
als gut.InformationsquelleAutor Anarach | 2015-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für diesen Fall sollten Sie
Exit Sub
oderExit Function
und lassen Sie Ihrehello
- label, um den letzten Teil des Codes. Beispiel anzeigen:Ich möchte nicht, dass der code zu Ende, nachdem der Fehler, ich will es weiterhin ,
Nichts,
Exit
ist ein Schlüsselwort, um zu stoppen Laufenden Prozess. So, für die AusfahrtFunciton
verwendenExit Function
für die AusfahrtSub
verwendenExit Sub
Ich habe aktualisiert die Frage, die ich nicht wollen, kommen aus der do-until-Schleife.
Ok, also , angenommen, der code hat Fehler gefunden, die in Ihrer ersten iteration und es hat gedruckt die Nachricht, jetzt gehts wieder auf die Schleife und fortsetzen der Ausführung den rest der Anweisungen, bis die "DO until" - Anweisung erfüllt ist?
InformationsquelleAutor R.Katnaan
Benötigen Sie eine
exit sub
(oderexit function
wenn dies ist ein Teil einer Funktion anstelle eines sub -) Zeile des Codes vorhello: Msgbox"There is an error"
oder sonst den code unten wird es immer ausgeführt werden. Finden Sie in diesem Beitrag als Referenz-Wie zu stoppen VBA-makro automatisch?
Code-Beispiel-
Update:
Reparieren Ihre Schleife, die Sie bewegen soll, die code für die Fehlerbehandlung außerhalb der Schleife, aber immer noch halten die
exit sub
vor, um zu verhindern, dass es ausgeführt wird, unabhängig.Ich verstehe, dass auf der Suche nach dem Fehler wird es kommen, aber ich will es zu gehen zurück in den loop. ist es möglich
Sie müssten eine separate goto-Anweisung (in der error-handling-code), die bringt Sie zurück in die Schleife (bedingter test vor natürlich).
wie macht man das? schreiben Sie eine weitere goto-Anweisung nach dem "Nachricht", um zurück in die Schleife? wird es funktionieren auf diese Weise ? wird es weiterhin
IMO, es ist eine schmutzige Praxis, es zu tun, wie, dass, obwohl, ich würde empfehlen, zu überdenken, was auch immer Sie entwerfen, da es scheint, wie Sie es erwarten, werden Fehler sehr Häufig.
InformationsquelleAutor iliketocode