我试图解释用户找不到要打开的文件的情况:
Dim fn As String
fn = Application.GetOpenFilename("All Files,.", 1, "Select a file", , False)
If fn = False Then
Exit Sub
End If
当未选择文件时,这可以满足我的要求。
但是当用户确实选择了一个文件时,这个 If 语句会产生一个错误。谁能告诉我完成此任务的正确方法?
如果您查看 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
该函数不返回 boolean False
,而是返回string "False"
,因为它会将变体从函数转换为您的变量类型,因此您的测试应该是
If fn = "False" Then
(更改解释 - 感谢@SiddharthRout)
改变
If fn = False Then
至
If CStr(fn) = "False" Then