Excel VBA Dim声明难题
我希望用户打开一个他们选择的文件在上面做事情。我将变量File_path指定为变量,因为我不知道它的类型。我在代码中包括Debug.Print TypeName(文件路径),以查看它给了我什么。我的代码是:Excel VBA Dim声明难题,excel,vba,Excel,Vba,我希望用户打开一个他们选择的文件在上面做事情。我将变量File_path指定为变量,因为我不知道它的类型。我在代码中包括Debug.Print TypeName(文件路径),以查看它给了我什么。我的代码是: Dim File_path As Variant FilterType = "Text Files (*.txt),*.txt," & "Comma Separated Files (*.csv),*.csv," & "ASCII Files (*.asc),*.asc
Dim File_path As Variant
FilterType = "Text Files (*.txt),*.txt," & "Comma Separated Files (*.csv),*.csv," & "ASCII Files (*.asc),*.asc," & "All Files (*.*),*.*"
FilterIndex = 4
Title = "File to be Selected"
File_path = Application.GetOpenFilename(FileFilter:=FilterType, FilterIndex:=FilterIndex, Title:=Title)
If File_path = False Then
MsgBox "No file was selected."
Exit Sub
End If
Debug.Print TypeName(File_path)
打印给我字符串
但是当我用
Dim File_path As String
我得到一个运行时错误“13”:行中的类型不匹配
If File_path = False Then
在这种情况下,正确的声明是什么?发现这种情况的一般过程是什么?谢谢。如果您想检查是否有任何字符串分配给您的变量,您需要通过以下方式之一进行检查:
'1st option
if File_path = "" then
'2nd option- recommended
if Len(File_path) = 0 then
在这两种情况下,将变量
文件\u路径保留为String
如果要检查是否有任何字符串分配给变量,则需要通过以下方式之一执行此操作:
'1st option
if File_path = "" then
'2nd option- recommended
if Len(File_path) = 0 then
在这两种情况下,将变量文件路径保持为字符串考虑:
Sub dural()
Dim s As String
s = CStr(Application.GetOpenFilename())
If s = "False" Then
MsgBox "look like you cancelled"
End If
End Sub
考虑:
Sub dural()
Dim s As String
s = CStr(Application.GetOpenFilename())
If s = "False" Then
MsgBox "look like you cancelled"
End If
End Sub
实际上,您应该将返回值声明为变量
Dim File_path As Variant
出现错误的原因是因为应用程序。GetOpenFileName
返回一个变量。当该值可以转换为正常的字符串时,但当用户单击“取消”或X按钮时,将返回一个布尔值
,该值不能直接与字符串
类型进行比较
Dim ans As Boolean
ans = Application.GetOpenFilename()
为了演示这一点,您可以运行下面的代码。如果单击“取消”,则不会出现错误。如果您选择了一个文件,您会收到与您收到的相同的类型不匹配
错误,但原因相反。正在尝试将字符串
分配给布尔类型
Dim ans As Boolean
ans = Application.GetOpenFilename()
如果您查看了,它会很好地解释其中的用法。您实际上应该将返回值声明为一个变量
Dim File_path As Variant
出现错误的原因是因为应用程序。GetOpenFileName
返回一个变量。当该值可以转换为正常的字符串时,但当用户单击“取消”或X按钮时,将返回一个布尔值
,该值不能直接与字符串
类型进行比较
Dim ans As Boolean
ans = Application.GetOpenFilename()
为了演示这一点,您可以运行下面的代码。如果单击“取消”,则不会出现错误。如果您选择了一个文件,您会收到与您收到的相同的类型不匹配
错误,但原因相反。正在尝试将字符串
分配给布尔类型
Dim ans As Boolean
ans = Application.GetOpenFilename()
如果你看一下这本书,它会很好地解释它的用法