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



Excel忽略我的编程语句,即如果项目计数为零,它应该退出子项

考虑到它忽略了第一个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

更新:当我尝试自动遍历代码时,得到了这个效果很好的响应,我意识到当我运行整个过程时,我的问题仍然存在。

今天我终于知道发生了什么。。。事实上,潜艇确实按照程序停止并结束。那个特定的sub。但是,由于我在过程中从不同的sub调用它,所以代码会返回到调用sub并继续。

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

试试这个:

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)。但是,如果用户按下"OK">-文件对话框窗口中的当前文件夹被选择为

一种不同的方法:

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

最新更新