Frage

Ich folge den Anweisungen zum Erstellen einer neuen VBA-Prozedur in Access.Eine der Spezifikationen besteht darin, die standardmäßige ExitProc-Error-Behandlung zu verwenden.Ich war ein wenig verwirrt, was das bedeutete, aber ich schaute mir online Beispiele an und zuvor ausgefüllte Beispiele, die als Vorlage bereitgestellt wurden, kam auf Folgendes:

On Error GoTo HandleError
'code that may cause errors

ExitProc:
Exit Function
HandleError:
If FindFolders = False Then
    MsgBox ("Required folders for " & InstrumentName & " not found")
ElseIf FindFolderPaths = False Then
    MsgBox ("Required folder paths for " & InstrumentName & " not found")
End If

MsgBox Err.Number & " " & Err.Description & " in FindFolderPaths"
Resume ExitProc
End Function

findfolders ist eine boolesche Variable, die ich in der Prozedur als falsch markiert habe, um einen Fehler anzuzeigen, und FindFolderPaths ist der Name der Prozedur, die ich als Hinweis darauf verwende, ob die Pfade gefunden wurden.Wenn ich diesen Vorgang ausführe, werden die folgenden Nachrichtenfelder angezeigt.Ich habe einen Fehler im Ordnernamen erstellt, um zu zeigen, wie mit dem Fehler umgegangen wird:

-Erforderliche Ordner für ICPMS nicht gefunden

-0 in FindFolderPaths

-Erforderliche Ordner für ICPMS nicht gefunden

-20 Fortsetzen ohne Fehler in FindFolderPaths

Wenn ich die Prozedur Schritt für Schritt durchgegangen bin, sieht es so aus, als würde sie HandleError zweimal durchlaufen, bevor sie zu ExitProc wechselt, und ich kann nicht herausfinden, warum.Außerdem ändert sich die Fehlermeldung während der zweiten Schleife in HandleError, was seltsam ist.

War es hilfreich?

Lösung

Ihr Problem scheint darin zu bestehen, dass Sie den Fehlerhandler „missbrauchen“, indem Sie ihn direkt in Ihrem Code aufrufen Goto HandleError anstatt es automatisch aufrufen zu lassen, wenn ein Fehler auftritt.

Dies würde genau erklären, was Ihrer Meldung nach bei der Ausführung Ihres Codes ausgegeben wurde:

-Required folders for ICPMS not found  'shows regardless of what triggers the handler
-0 in FindFolderPaths                  'err number of zero means there's no error

Resume Exit Proc löst dann eine aus tatsächlich Fehler, Code ein zweites Mal aufrufen

-Required folders for ICPMS not found        'not relevant here...
-20 Resume without Error in FindFolderPaths  'an actual error number and message

Wenn es eine Bedingung gibt, auf die Sie testen können (z. B. ein fehlender Ordner), müssen Sie dies normalerweise nicht durch Aufrufen eines Fehlerbehandlers beheben – Sie können eine Meldung aus Ihrem „normalen“ Code anzeigen und dann einfach Exit function.Alternativ können Sie mithilfe von einen benutzerdefinierten Fehler auslösen Err.Raise, Geben Sie ihm eine bestimmte Fehlernummer und eine Beschreibung, die Sie in Ihrem Fehlerhandler testen und entsprechend behandeln können.

http://msdn.microsoft.com/en-us/library/office/aa164019(v=office.10).aspx#odc_tentipsvba_topic3

Andere Tipps

Resume EXITPROC entfernen.Der Code hinterlässt die Funktion, wenn sie die Endfunktion trifft.Sie müssen auch die Klammern entfernen, wenn Sie Msgbox anrufen.Verwenden Sie nur Klammern, wenn Sie mit der Msgbox etwas gleich einsetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top