使用if…then VBA处理错误
是否有任何方法可以使用if…then进行错误处理(无错误…或GoTo!!) 我有下面的代码,但它卡在if语句中使用if…then VBA处理错误,vba,excel,Vba,Excel,是否有任何方法可以使用if…then进行错误处理(无错误…或GoTo!!) 我有下面的代码,但它卡在if语句中 Sub test() If IsError(Workbooks.Open("C:\Users\Desktop\Test\journals.xlsx")) = True Then 'Do something End If End Sub 谢谢 您可以关闭错误处理,然后检查打开工作簿时是否生成了错
Sub test()
If IsError(Workbooks.Open("C:\Users\Desktop\Test\journals.xlsx")) = True Then
'Do something
End If
End Sub
谢谢 您可以关闭错误处理,然后检查打开工作簿时是否生成了错误号
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks.Open("C:\Users\Desktop\Test\journals.xlsx")
If Err.Number > 0 Then
'' there was an error with opening the workbook
End If
On Error GoTo 0
编辑1:既然您已经做得很好了,直接将它设置为wb
对象,为什么不使用它的功能呢
If wb Is Nothing Then
您可以使用Dir()
函数
If Dir("C:\Users\Desktop\Test\journals.xlsx") = "" Then
'do something
Else
Workbooks.Open "C:\Users\Desktop\Test\journals.xlsx"
End If
最简单的答案是否定的,您可以以某种方式使用On Error,或者:
On error resume next
Workbooks.Open("C:\Users\Desktop\Test\journals.xlsx")
If Err.Number <> 0 then
' the workbook is not at that location
Err.Clear
On Error Goto 0
End If
我想在不使用On Error语句的情况下解决该问题,但可能存在重复。VBA中的错误处理是使用On Error语句完成的。时期在某些情况下,您可以找到特定于问题的解决方案。也许你需要改变标题,因为它是误导;这不是错误处理,而是检查文件是否存在。(这个问题在这里也有10000个答案…)所以现在它是这个的重复:快速的答案是否定的,没有关于错误陈述的一般替换(不幸的是)。IsError是一个Excel函数,用于检查单元格值之间的错误值。请看这里:请允许我提供一个替代方案,
errhandler:
If Err.Number <> 0 then
If Err.Number = 1004 Then
' the workbook is not at that location, do something about it, then resume next
End If
End If
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fileExists = fso.fileExists("C:\Users\Desktop\Test\journals.xlsx")