2017-08-10 60 views
0

有什麼辦法可以創建在Excel中的進程條VBA作爲調用多個子嗎?每個子文件大約需要10分鐘才能從文件複製並粘貼到此工作簿。我想知道它處理了多長時間(完成百分比)。 我知道如果我有for循環進度,我可以爲它應用進度條。不知道如何循環這樣的東西。調用多個子進度條

Sub batch_import() 

Call Import_NJ 
Call Import_NY 
Call Import_MD 
Call Import_VA 
Call Import_WV 
Call Import_PA 
Call Import_KY 
Call Import_TN 
Call Import_IN 
Call Import_IA 
Call Import_MI 
Call Import_MO 
Call Import_IL 
Call Import_LW 

End Sub 
+0

你是否想要進度條在Import_ * sub或者每次調用之間更新? –

+0

你有14個電話,每次通話後你可以增加一個變量1/14,如:'x = x + 1/14'。最後達到1.你可以顯示'x',但是你想要的。 (你可以簡單地使用debug.print,或者如果你需要enduser的東西,你可以在用戶表單中使用一個欄) – Tehscript

+0

也許有點先進的VBA的東西(涉及類,模塊屬性,默認實例和工廠方法),但一個*實際*可重用,靈活,可取消和好看的進度指標形式在VBA中完全可行;請參閱[這裏](https://codereview.stackexchange.com/q/87818/23788)。 –

回答

0

如果你總是有相同數量的潛在呼叫(即14確定)。你可以做

Sub batch_import() 
with Application 
    Call Import_NJ 
    .StatusBar = "Progress: " & Format(1/14, "0%") 
    Call Import_NY 
    .StatusBar = "Progress: " & Format(2/14, "0%") 
    Call Import_MD 
    .StatusBar = "Progress: " & Format(3/14, "0%") 
    Call Import_VA 
    .StatusBar = "Progress: " & Format(4/14, "0%") 
    Call Import_WV 
    .StatusBar = "Progress: " & Format(5/14, "0%") 
    Call Import_PA 
    .StatusBar = "Progress: " & Format(6/14, "0%") 
    Call Import_KY 
    .StatusBar = "Progress: " & Format(7/14, "0%") 
    Call Import_TN 
    .StatusBar = "Progress: " & Format(8/14, "0%") 
    Call Import_IN 
    .StatusBar = "Progress: " & Format(9/14, "0%") 
    Call Import_IA 
    .StatusBar = "Progress: " & Format(10/14, "0%") 
    Call Import_MI 
    .StatusBar = "Progress: " & Format(11/14, "0%") 
    Call Import_MO 
    .StatusBar = "Progress: " & Format(12/14, "0%") 
    Call Import_IL 
    .StatusBar = "Progress: " & Format(13/14, "0%") 
    Call Import_LW 
    .StatusBar = "Progress: " & Format(14/14, "0%") 
    .StatusBar =null 
end with 
End Sub 
+0

我會試試這個!它看起來很容易理解和運行。 –

+0

嗨,@ Dude_Scott。當我輸入這個。流程欄儘可能順暢地運行。感謝您的提示!但是,如果我想讓它停下來呢? –

+0

將.StatusBar = null更改爲.StatusBar = false –