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".

Était-ce utile?

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.

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