在VBA中遇到一些奇怪的错误

时间:2012-01-27 11:50:47

标签: vba powerpoint powerpoint-vba powerpoint-2007

我正在做powerpoint 2007自动化项目。因为我正在使用宏编程(VBA)。运行宏时出现以下错误。

Err.Number= -2147024809 (80070057)

但我关心的不是错误因为我想抓住这个错误并且基于这个错误我想要执行一些操作。

这就是为什么我尝试像这样编码以处理错误代码:

OnError Goto Err:
'some code

Err:
If Err.number = -2147024809 (80070057) then
'do something
end if
Resume next

所以,如果我以这种方式写错误号,那么它就不会允许它了。它给出了错误。

主要的是当错误发生时,它没有进入“Err:”。它只是弹出“End”和“Debug”选项的错误。

3 个答案:

答案 0 :(得分:1)

错误编号是数字:-2147024809,它只是显示,因为字符"-2147024809 (80070057)"为清晰(80070057)是十六进制的错误编号。

你想要;

if err.number = -2147024809 then ....

或者如果你这样选择

if err.number = &h80070057 then ....

答案 1 :(得分:1)

错误消息的80070057部分是负数-2147024809的无符号十六进制版本。删除你的代码部分,如果你想跟踪数字的十六进制版本(对于通过谷歌等研究错误很有用),你就可以了,然后将其添加为评论。

答案 2 :(得分:1)

虽然它似乎有用,但我对使用保留对象名称(Err)作为标签持谨慎态度。

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

如果您需要捕获可能仅在代码中的某些位置发生的非常具体的错误,您还可以执行本地错误处理程序:

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