【问题标题】:Excel VBA ignores my IF statement to exit the subExcel VBA 忽略我的 IF 语句以退出子
【发布时间】:2014-02-19 10:04:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个:

    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" - FileDialog 窗口 中的当前文件夹被选中

    【讨论】:

    • +1 关于演出的好处 = false
    • 太棒了。谢谢您的帮助!作品。只要允许,我就会选择它作为答案。
    【解决方案2】:

    另一种方法:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2015-11-27
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多