1

我试图解释用户找不到要打开的文件的情况:

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

If fn = False Then
    Exit Sub
End If

当未选择文件时,这可以满足我的要求。

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

4

3 回答 3

3

如果您查看 Excel 的内置帮助,您会注意到它Application.GetOpenFilename返回了一个变体。所以你所要做的就是声明fnVariant

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
于 2012-08-14T15:33:43.870 回答
2

该函数不返回 boolean False,而是返回string "False",因为它会将变体从函数转换为您的变量类型,因此您的测试应该是

If fn = "False" Then

(更改解释 - 感谢@SiddharthRout)

于 2012-08-14T15:25:59.117 回答
1

改变

If fn = False Then

If CStr(fn) = "False" Then
于 2012-08-14T15:22:15.673 回答