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
,因为我需要停止整个程序!
答案 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
会返回0
(False
)。但是如果用户按“确定” - 选择 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