Excel Filedialog错误:类型不匹配
当我没有添加If-Else函数时,我的程序可以工作。。。如果部分工作,则执行messagebox。但是,其他部分不起作用。。。不知道为什么。。。错误是类型不匹配,可能是从以下行开始的:Set wb2=Workbooks.Open(FileToOpen) 提前感谢您的帮助:)Excel Filedialog错误:类型不匹配,excel,vba,Excel,Vba,当我没有添加If-Else函数时,我的程序可以工作。。。如果部分工作,则执行messagebox。但是,其他部分不起作用。。。不知道为什么。。。错误是类型不匹配,可能是从以下行开始的:Set wb2=Workbooks.Open(FileToOpen) 提前感谢您的帮助:) 在第一个分支中有一个Exit Sub,因此Else是多余的-您可以将缩进级别降低一级 问题是如果FileToOpen=False将字符串与布尔值文本进行比较,VBA(正确地)不知道该如何计算:这就是引发类型不匹配错误的原因
在第一个分支中有一个
Exit Sub
,因此Else
是多余的-您可以将缩进级别降低一级
问题是如果FileToOpen=False
将字符串
与布尔值
文本进行比较,VBA(正确地)不知道该如何计算:这就是引发类型不匹配错误的原因
GetOpenFileName
返回一个变量
,该变量是字符串
,然后在取消对话框时选择一个文件或一个布尔值
——因此,验证类型而不是值:
Dim path As Variant
path = Application.GetOpenFilename(Title:="Please choose a Excel File to Open",
FileFilter:="Excel Files *.xlsx(*.xlsx),")
'path is Variant/Boolean if cancelled, Variant/String if valid.
If VarType(path) = vbBoolean Then
MsgBox "No file selected", vbExclamation, "Sorry!"
Exit Sub
End If
Debug.Assert VarType(path) = vbString
With Application.Workbooks.Open(path)
.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets(2).range("A1")
Sheet1.range("B30").Value = path
.Close
End With
FileToOpen
是否在任何地方声明As
what?As字符串声明在顶部,我没有显示它,当您遇到类型不匹配错误时,了解所涉及的类型有点相关。。我建议您的问题包括该代码段中涉及的所有声明:给我们一个nice=)还有“它可能是从这一行开始的”…您是否尝试过设置断点(F9)并调试代码,单步执行,弄清楚哪条指令抛出了类型不匹配?当我试图将字符串
与False
进行比较时,会发现类型不匹配。我不知道你是如何得到Open
语句的。这里@RachelChia还有更多关于它的信息
Dim path As Variant
path = Application.GetOpenFilename(Title:="Please choose a Excel File to Open",
FileFilter:="Excel Files *.xlsx(*.xlsx),")
'path is Variant/Boolean if cancelled, Variant/String if valid.
If VarType(path) = vbBoolean Then
MsgBox "No file selected", vbExclamation, "Sorry!"
Exit Sub
End If
Debug.Assert VarType(path) = vbString
With Application.Workbooks.Open(path)
.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets(2).range("A1")
Sheet1.range("B30").Value = path
.Close
End With