2017-08-10 51 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 –