Coincé avec une erreur étrange dans VBA
-
14-11-2019 - |
Question
Je fais un projet dans PowerPoint 2007 Automation. En ce que j'utilise la programmation macro (VBA). J'obtiens l'erreur suivante lors de l'exécution de la macro.
Err.Number= -2147024809 (80070057)
Mais ma préoccupation ne concerne pas l'erreur car je veux attraper cette erreur et basée sur cette erreur, je veux effectuer une action.
C'est pourquoi j'essaie de coder comme ceci pour la remise des erreurs du code:
OnError Goto Err:
'some code
Err:
If Err.number = -2147024809 (80070057) then
'do something
end if
Resume next
Donc, bascié, si j'écris le numéro d'erreur de cette manière, il ne le permettait pas. il donne une erreur.
Et une chose majeure est que lorsque l'erreur se produit parfois, elle n'est pas allée à "Err:". Il suffit d'erreur pop-up avec des options "fin" et "débogage".
La solution
Bien que cela semble fonctionner, je serais prudent à utiliser un nom d'objet réservé (ERR) comme étiquette, d'une chose.
On Error GoTo ErrorHandler
' Your code here
' Make sure you don't hit the errorhandler when there's
' no error:
NormalExit:
Exit Sub ' or Function, whichever this is
ErrorHandler:
If err.Number = 123456788 Then
' Take corrective action
' then continue
Resume Next
End If
' Trap other specific or general errors here
' Then make sure you know where you're going to exit:
Resume NormalExit
Si vous avez besoin de piéger des erreurs très spécifiques qui ne se produisent que à certains endroits de votre code, vous pouvez également faire un Handhandler local:
On Error Resume Next
' Some code that might cause problems
' Did it throw the error you're trying to trap?
If Err.Number = 12398745 then
' Corrective action
End If
' And now we return to our regularly scheduled error trapping
On Error GoTo ErrorHandler
Autres conseils
Les numéros d'erreur sont numériques: -2147024809
, c'est juste affiché à toi comme la chaîne "-2147024809 (80070057)"
pour plus de clarté (80070057)
étant le numéro d'erreur en hexadécimal.
Tu veux;
if err.number = -2147024809 then ....
ou si vous choisissez ainsi
if err.number = &h80070057 then ....
La 80070057
Une partie du message d'erreur est la version hexadécimale non signée du nombre négatif -2147024809
. Supprimez cette partie de votre code et tout ira bien, si vous souhaitez garder une trace de la version hexadécimale du numéro (peut être utile pour rechercher des erreurs via Google, etc.), ajoutez-le simplement en commentaire.