2014-09-12 33 views
-1
Set fd = Application.FileDialog(3) 
fd.Title = "Select A File" 
fd.AllowMultiSelect = True 
fd.Filters.Clear 
fd.Filters.Add "CSV File", "*.CSV" 

If fd.Show = True Then 
    For Each varFile In fd.SelectedItems 
     GetFileName = varFile  
     If fd.SelectedItems.Count > 0 Then 
      MsgBox "File choosen = " & fd.SelectedItems.Count 
     Else 
      MsgBox "No file was selected" 
      Exit Sub 
     End If 
    Next 
End If 

每当我运行这个在VBA,迅速打开选择文件,如果我选择任意数量的文件,程序正常运行。虽然如果我点击'取消'而不是选择文件,程序不会退出子,只是存在什么可能是错误?谢谢VBA犯规进去否则

+1

您的代码不作任何SENCE给我,你开始每个,你不说下,然后你开始一个if语句,你不关。我认为这可能与代码无法正常工作有关。 – 2014-09-12 14:13:20

+2

正如@Goosebumbs指出的那样,你有两个打开的If语句,只有一个关闭。我怀疑你的End If是否在错误的地方,所以你的Else正在错误的地方运行(即Else匹配If If fd.Show = True而不是if if .SelectedItems.Count> 0'大概你打算)。 – 2014-09-12 14:15:13

+0

-1示例代码不能编译! – LondonRob 2014-09-12 14:19:32

回答

1

在VBA -1评估为真。所以,你最好的办法是做这样的事情:

Set fd = Application.FileDialog(3) 
fd.Title = "Select A File" 
fd.AllowMultiSelect = True 
fd.Filters.Clear 
fd.Filters.Add "CSV File", "*.CSV" 

Dim FileChosen As Integer 
FileChosen = fd.Show 

If FileChosen <> -1 Then 
    MsgBox "No file was selected" 
    Exit Sub 
Else 
    For Each varFile In fd.SelectedItems 
     MsgBox "File choosen = " & varFile 
    End For 
End If