Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用if…then VBA处理错误_Vba_Excel - Fatal编程技术网

使用if…then VBA处理错误

使用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 谢谢 您可以关闭错误处理,然后检查打开工作簿时是否生成了错

是否有任何方法可以使用if…then进行错误处理(无错误…或GoTo!!)

我有下面的代码,但它卡在if语句中

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