Excel VBA打开文件(错误处理)

时间:2012-08-14 15:06:42

标签: excel vba excel-vba

我正在尝试解决用户未找到要打开的文件的情况:

Dim fn As String
fn = Application.GetOpenFilename("All Files,.", 1, "Select a file", , False)

If fn = False Then
    Exit Sub
End If

当没有选择文件时,这就是我想要的。

但是当用户 选择文件时,此If语句会产生错误。谁能告诉我完成这个的正确方法呢?

3 个答案:

答案 0 :(得分:3)

如果您查看Excel的内置帮助,您会注意到Application.GetOpenFilename返回了一个变体。因此,您所要做的就是将fn声明为Variant

Sub Sample()
    Dim fn As Variant

    fn = Application.GetOpenFilename("All Files,.", 1, "Select a file", , False)

    If fn = False Then Exit Sub

    MsgBox fn
End Sub

答案 1 :(得分:2)

该函数不返回布尔值False,而是返回字符串 "False",因为它会将函数中的变量强制转换为变量类型,因此您的测试应该是是

If fn = "False" Then

(改变了解释 - 谢谢@SiddharthRout)

答案 2 :(得分:1)

更改

If fn = False Then

If CStr(fn) = "False" Then