Excel VBA忽略我的IF语句以退出子

时间:2014-02-19 10:04:13

标签: excel vba excel-vba

Excel忽略了我的编程语句,如果项目计数为空

,它应该退出sub

鉴于它忽略了第一个IF语句,我试图用第二个语句来捕获它,但它也忽略了它!

代码不仅执行,而且只是跳过所有语句,如果我尝试使用F8逐行检查,那么它会执行完整的代码。

我不明白为什么会这样做或者是什么导致它...感谢任何帮助。

 Private Sub SelectFolder()

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = Application.DefaultFilePath & " \"
    .Title = "Select Folder"
    .Show
    If .SelectedItems.Count = 0 Then
        Exit Sub
    Else
        sPfad = .SelectedItems(1)
    End If
End With

If sPfad = "" Then Exit Sub

End Sub

更新: 在我尝试自动逐步执行代码后获得此响应时,我意识到当我运行整个过程时,我的问题仍然存在。

今天我终于知道了发生了什么......实际上,子程序确实如编程,停止和结束。那个特别的子。但是,由于我在一个过程中从一个不同的子调用它,然后代码返回到调用子并继续。

我需要的只是将Exit Sub更改为End,因为我需要停止整个程序!

2 个答案:

答案 0 :(得分:3)

试试这个:

Sub SelectFolder()

   With Application.FileDialog(msoFileDialogFolderPicker)
       .InitialFileName = Application.DefaultFilePath & " \"
       .Title = "Select Folder"
       If Not .Show Then Exit Sub
       sPfad = .SelectedItems(1)
   End With

End Sub

当用户按“取消”时,.Show会返回0False)。但是如果用户按“确定” - 选择 FileDialog窗口中的当前文件夹

答案 1 :(得分:0)

另一种方法:

Private Sub SelectFolder()
Dim strPath As Variant
Dim sPfad As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = Application.DefaultFilePath & " \"
    .Title = "Select Folder"
End With

strPath = Application.FileDialog(msoFileDialogFolderPicker).Show
    If strPath = False Then
        Exit Sub
    Else
        sPfad = strPath
    End If
End Sub