2014-02-19 34 views
2

Excel中忽略了我的编程语句,它应该退出子,如果项目数是什么Excel VBA中忽略了我的IF语句退出子

由于它忽略了第一个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 

UPDATE: 得到这个响应当我试图通过代码自动步进其运作良好后,我意识到,当我跑的整个过程,我的问题依然存在。

今天我终于了解到发生了什么事情......事实上,子程序确实按照程序设计,停止和结束。那特别的分。但是,由于我从一个过程中的另一个子项调用它,所以代码将返回到调用子继续。

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

回答

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)。但是,如果用户按“OK” - 在的FileDialog窗口选择

+1

+1好点= [**'FALSE' **] (http://msdn.microsoft.com/en-us/library/office/aa432435(v=office.12).aspx) – 2014-02-19 10:10:56

+1

太棒了。谢谢您的帮助!作品。只要SO让我做,我就会选择它作为答案。 – rohrl77

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