標題:
[發問]
使用 FileDialog 問題 [已解決]
[打印本頁]
作者:
jimmyhk
時間:
2011-8-31 02:31
標題:
使用 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
作者:
GBKEE
時間:
2011-8-31 13:52
回復
1#
jimmyhk
試試看
Private Sub CommandButton2_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then
If MsgBox("現在將儲存到 " & fd.SelectedItems(1) & "/ . 請按確定繼續", vbYesNo) = vbYes Then
Sheets("Data_Field").Select
Range("D24").Value = fd.SelectedItems(1)
Unload ChoiceSaveLocation
End If
End If
End Sub
複製代碼
作者:
jimmyhk
時間:
2011-9-1 23:49
哦~~~ 於裡面再加一個 if case... um..... 好
試一下先~
作者:
jimmyhk
時間:
2011-9-14 19:15
回復
2#
GBKEE
最後我轉了另一個方法處理,
不知這個好不好~
Private Sub CommandButton2_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.InitialFileName = "d:\" '如果用家按取消就會執行 RunAgain
On Error GoTo RunAgain
If fd.Show = -1 Then MsgBox "檔案將儲存到 " & fd.SelectedItems(1) & "\ , 請按確定繼續."
RunAgain:
Select Case Err.Number
Case 5
Unload ChoiceSaveLocation
ChoiceSaveLocation.Show
End Select
Sheets("Data_Field").Select
Range("D24").Value = fd.SelectedItems(1)
If Range("D24") <> Range("G24") Then
AskChangeDefaultBox.Show
Else
Sheets("Input").Select
Unload ChoiceSaveLocation
End If
Unload ChoiceSaveLocation
End Sub
複製代碼
作者:
GBKEE
時間:
2011-9-14 19:46
回復
4#
jimmyhk
使用 On Error GoTo RunAgain 在這程序中一有 錯誤 就會導引到 RunAgain 要小心使用
Private Sub CommandButton2_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.InitialFileName = "d:\" '如果用家按取消就會執行 RunAgain
On Error GoTo RunAgain
If fd.Show = -1 Then MsgBox "檔案將儲存到 " & fd.SelectedItems(1) & "\ , 請按確定繼續."
'**************這MsgBox 有按沒按都沒作用?????**********
Sheets("Data_Field").Select
Range("D24").Value = fd.SelectedItems(1)
If Range("D24") <> Range("G24") Then
AskChangeDefaultBox.Show
Else
Sheets("Input").Select
Unload ChoiceSaveLocation
End If
Unload ChoiceSaveLocation
Exit Sub
'''''''一般處裡錯誤都會置於程序底部 '''''''
RunAgain:
Select Case Err.Number
Case 5
Unload ChoiceSaveLocation
ChoiceSaveLocation.Show
End Select
Resume '返回產生錯誤的程式碼
End Sub
複製代碼
作者:
jimmyhk
時間:
2011-9-14 19:54
回復
5#
GBKEE
Private Sub CommandButton2_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.InitialFileName = "d:\" '如果用家按取消就會執行 RunAgain
On Error GoTo RunAgain
If fd.Show = -1 Then MsgBox "檔案將儲存到 " & fd.SelectedItems(1) & "\ , 請按確定繼續."
'**************這MsgBox 有按沒按都沒作用?????********** <這是沒有用的, 只是作一個小提醒
Sheets("Data_Field").Select
Range("D24").Value = fd.SelectedItems(1)
If Range("D24") <> Range("G24") Then
AskChangeDefaultBox.Show
Else
Sheets("Input").Select
Unload ChoiceSaveLocation
End If
Unload ChoiceSaveLocation
Exit Sub
'''''''一般處裡錯誤都會置於程序底部 ''''''' <- 明白
RunAgain:
Select Case Err.Number
Case 5 ' **我就是怕會有其他錯誤, 所以決定只有 Case 5 才執行重選.
Unload ChoiceSaveLocation
ChoiceSaveLocation.Show
End Select
Resume '返回產生錯誤的程式碼 <- 在這加這一句的原因是 ? 因為現在如果使用者在按取消後已會自動重新行一次 Unload ChoiceSaveLocation 和 ChoiceSaveLoction.show, 加入的目的是?
End Sub
複製代碼
作者:
GBKEE
時間:
2011-9-14 20:13
本帖最後由 GBKEE 於 2011-9-14 20:14 編輯
回復
6#
jimmyhk
Resume 這加這一句的原因是
一般都是錯誤已處裡完後, 錯誤已消失了.可回去原來的那一行程式碼.
作者:
jimmyhk
時間:
2011-9-14 20:37
回復
7#
GBKEE
消失是有關錯誤已解決還是給錯誤訊息彈出後可以繼續執行其他步驟?
作者:
GBKEE
時間:
2011-9-15 06:45
回復
8#
jimmyhk
Resume
一般都是
錯誤已處裡完後,
那個
錯誤已消失了.可回去原來的那一行
繼續程式碼的運行
.
作者:
jimmyhk
時間:
2011-9-15 06:54
回復
9#
GBKEE
哦~ 明白~ thx~~~
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)