Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 计算进度条过程中的子节点数_Excel_Vba_Progress Bar_Procedure - Fatal编程技术网

Excel 计算进度条过程中的子节点数

Excel 计算进度条过程中的子节点数,excel,vba,progress-bar,procedure,Excel,Vba,Progress Bar,Procedure,我有一个模板,在更新模板时,它会更改excel屏幕左下角的状态栏。我的大多数同事可能不会注意到这一点。因此,为了让他们了解宏执行过程中的进度,我想创建一个进度条 因此,我看了一些示例,现在设计了一个进度条,它可以很好地用于所提供的代码。 由于我的特殊需要,我希望在每次调用新sub时更新进度条。我知道在过程(6)中执行的SUB的固定数目,我想让VBA检查正在执行的数目。sub 1完成后,进度为1/6=16,67%,sub 2完成后,进度为33%,以此类推 我搜索了vba方法来计算代码中有多少子对象

我有一个模板,在更新模板时,它会更改excel屏幕左下角的状态栏。我的大多数同事可能不会注意到这一点。因此,为了让他们了解宏执行过程中的进度,我想创建一个进度条

因此,我看了一些示例,现在设计了一个进度条,它可以很好地用于所提供的代码。 由于我的特殊需要,我希望在每次调用新sub时更新进度条。我知道在过程(6)中执行的SUB的固定数目,我想让VBA检查正在执行的数目。sub 1完成后,进度为1/6=16,67%,sub 2完成后,进度为33%,以此类推

我搜索了vba方法来计算代码中有多少子对象,并寻找一种方法来确定过程中的位置

能给我想要的吗

我在执行过程中调用了这些SUB:

Call datawissen
Call dataplaatsen
Call kolomtitels
Call toevoegen
Call maaktabel
Call refreshpivot

以编程方式计算一段代码中的sub数并非不可能,这可能超出了您的需要。大多数人可能会这样做:

total_no = 6
cnt = 0

refresh_bar cnt / total_no

Call datawissen
cnt = cnt + 1
refresh_bar cnt / total_no

Call dataplaatsen
cnt = cnt + 1
refresh_bar cnt / total_no

Call kolomtitels
cnt = cnt + 1
refresh_bar cnt / total_no

Call toevoegen
cnt = cnt + 1
refresh_bar cnt / total_no

Call maaktabel
cnt = cnt + 1
refresh_bar cnt / total_no

Call refreshpivot
cnt = cnt + 1
refresh_bar cnt / total_no

其中,refresh\u bar是一个子项,它使用作为参数提供的完成百分比值重新绘制进度条。

只要有一个计数器变量,每次调用过程时它都会增加1。这也是我在发布答案时创建的:counter=0 call datawissen counter=counter+1 For I=1 To Worksheets.Count如果工作表(i).Name=“Output Totaal”,则调用ASW Next i counter=counter+1调用dataplaatsen,其中counter将是用于进度条的值。(并除以6获得百分比)