如果File =“False”Application.GetOpenFileName错误13types不匹配

我正在使用Application.GetOpenFileName的代码。 我试图确保如果有人点击取消select文件时,该代码不会中断。 我有一个if语句,指出如果文件=“假”,然后显示一个msgbox和退出子。 这工作正常,当没有文件被选中,但是当我运行与所选文件的macros,然后我得到一个types不匹配的错误。 我曾尝试了一堆不同的绕圈,没有任何工作。 我在这里也看了其他类似的问题,但没有为我工作。

Dim nom As String Dim wb1, wb2, wb3, wb4, wb5 As Excel.Workbook Dim i, j, k, file As Variant nom = ActiveWorkbook.Name If CurDir() <> CurDir("J:") Then ChDrive "J:" ChDir "J:FEA Material Data" End If For i = 1 To 5 Application.ScreenUpdating = False MsgBox ("Select Compound" & vbNewLine & vbNewLine & "If Data From Criterion, Select Loading Only" & vbNewLine & vbNewLine & "If Data From Alliance, Select All") file = Application.GetOpenFilename( _ FileFilter:="Text Files (*.csv), *.csv", _ MultiSelect:=True) If file = "False" Then MsgBox "No File Selected" Exit Sub Else counter = 1 While counter <= UBound(file) Workbooks.Open file(counter) counter = counter + 1 Wend End If more code 

当它有文件时,它返回一个数组的变体。 Debug.Print VarType(file)返回8204.所以你需要检查数组的文件名。 如果用户select取消,那么变体将是一个布尔值。

 If VarType(file) = 11 Then MsgBox "No File Selected" Exit Sub 

或更可读(感谢Dirk Reichel):

 If Not IsArray(file) Then MsgBox "No File Selected" Exit Sub 

确定变体的types