Question

Je suis en suivant les instructions sur la création d'une nouvelle procédure VBA dans Access.L'une des caractéristiques est d'utiliser la norme ExitProc-la gestion des Erreurs.J'ai été un peu confus sur ce qui ment, mais j'ai regardé les exemples en ligne et déjà terminé exemples fournis en tant que modèle, j'en suis arrivé à ceci:

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 est une variable booléenne j'ai marqué comme faux dans la procédure pour indiquer une erreur et FindFolderPaths est le nom de la procédure, je suis en utilisant comme une indication de savoir si les chemins où le trouver.Lorsque j'exécute cette procédure, le msg suivant des cases.J'ai créé une erreur dans le nom du dossier pour montrer comment l'erreur doit être manipulé :

-Dossiers requis pour icp-ms pas trouvé

-0 dans FindFolderPaths

-Dossiers requis pour icp-ms pas trouvé

-20 Reprendre sans Erreur dans FindFolderPaths

Lorsque je traversai la procédure, étape par étape, il ressemble à sa boucle à travers HandleError deux fois avant d'aller ExitProc et je ne peux pas comprendre pourquoi.Aussi le message d'erreur changements au cours de la deuxième boucle dans HandleError qui est étrange.

Était-ce utile?

La solution

Votre problème semble être que vous êtes "mal à l'aide du" gestionnaire d'erreur en l'appelant directement dans votre code à l'aide de Goto HandleError au lieu de l'avoir appelé automatiquement lorsqu'une erreur se produit.

Cela permettrait d'expliquer exactement ce que vous rapport était de sortie lors de votre code exécuté:

-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 puis déclenche une réel erreur, en appelant le code une deuxième fois

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

Généralement, s'il y a une condition, vous pouvez vous tester (comme un dossier manquant), alors vous n'avez pas besoin de gérer que par l'appel d'un gestionnaire d'erreur - vous pouvez afficher un message à partir de votre "régulier" de code et puis juste Exit function.Sinon, élever un message d'erreur personnalisé à l'aide de Err.Raise, en lui donnant un numéro d'erreur spécifique et de description qui permet de tester et de gérer de manière appropriée dans votre Gestionnaire d'Erreur.

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

Autres conseils

Supprimer Reprendre ExitProc.Le code laissera la fonction lorsqu'il frappera la fonction de fin.De plus, vous devez supprimer les parenthèses lorsque vous appelez msgbox.Utilisez uniquement des parenthèses lorsque vous définissez quelque chose égal à msgbox.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top