返回列表 上一主題 發帖

[發問] 使用 FileDialog 問題 [已解決]

[發問] 使用 FileDialog 問題 [已解決]

本帖最後由 jimmyhk 於 2011-9-14 19:17 編輯

我建立了一個表單, 當按了 CommandButton2 之後就會開一個瀏覽資料夾的物件,
用作選擇資料夾, 及後把選擇了的資料夾路徑存放到 Data_Field 的 D24 內,
內容如下:

Private Sub CommandButton2_Click()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then MsgBox "現在將儲存到 " & fd.SelectedItems(1) & "/  .  請按確定繼續"

Sheets("Data_Field").Select
Range("D24").Value = fd.SelectedItems(1)  '如果使用者在 FileDialog 開啟時沒有按確定, 按了取消鍵, 就會停在這裡.   應怎麼辦?
Unload ChoiceSaveLocation
End Sub

哦~~~  於裡面再加一個 if case...  um.....  好
試一下先~

TOP

回復 2# GBKEE

最後我轉了另一個方法處理,
不知這個好不好~
  1. Private Sub CommandButton2_Click()
  2.     Dim fd As FileDialog
  3.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  4.     fd.InitialFileName = "d:\"  '如果用家按取消就會執行 RunAgain
  5. On Error GoTo RunAgain
  6.     If fd.Show = -1 Then MsgBox "檔案將儲存到 " & fd.SelectedItems(1) & "\  , 請按確定繼續."

  7. RunAgain:
  8. Select Case Err.Number
  9. Case 5
  10. Unload ChoiceSaveLocation
  11. ChoiceSaveLocation.Show
  12. End Select

  13. Sheets("Data_Field").Select
  14. Range("D24").Value = fd.SelectedItems(1)

  15. If Range("D24") <> Range("G24") Then
  16.     AskChangeDefaultBox.Show
  17.     Else
  18.     Sheets("Input").Select
  19.     Unload ChoiceSaveLocation
  20. End If
  21. Unload ChoiceSaveLocation
  22. End Sub
複製代碼

TOP

回復 5# GBKEE
  1. Private Sub CommandButton2_Click()
  2.     Dim fd As FileDialog
  3.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  4.     fd.InitialFileName = "d:\"  '如果用家按取消就會執行 RunAgain
  5. On Error GoTo RunAgain
  6.     If fd.Show = -1 Then MsgBox "檔案將儲存到 " & fd.SelectedItems(1) & "\  , 請按確定繼續."
  7.               '**************這MsgBox 有按沒按都沒作用?????**********  <這是沒有用的, 只是作一個小提醒
  8. Sheets("Data_Field").Select
  9. Range("D24").Value = fd.SelectedItems(1)
  10. If Range("D24") <> Range("G24") Then
  11.     AskChangeDefaultBox.Show
  12.     Else
  13.     Sheets("Input").Select
  14.     Unload ChoiceSaveLocation
  15. End If
  16. Unload ChoiceSaveLocation
  17. Exit Sub
  18. '''''''一般處裡錯誤都會置於程序底部   ''''''' <- 明白
  19. RunAgain:
  20. Select Case Err.Number
  21. Case 5 '  **我就是怕會有其他錯誤, 所以決定只有 Case 5 才執行重選.  
  22. Unload ChoiceSaveLocation
  23. ChoiceSaveLocation.Show
  24. End Select
  25. Resume          '返回產生錯誤的程式碼 <- 在這加這一句的原因是 ?  因為現在如果使用者在按取消後已會自動重新行一次 Unload ChoiceSaveLocation 和 ChoiceSaveLoction.show, 加入的目的是?
  26. End Sub
複製代碼

TOP

回復 7# GBKEE


消失是有關錯誤已解決還是給錯誤訊息彈出後可以繼續執行其他步驟?

TOP

回復 9# GBKEE


哦~  明白~  thx~~~

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題