2014-02-19 35 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