Подсчитать количество подводных лодок в процедуре для индикатора выполнения - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть шаблон, который меняет строку состояния в левом нижнем углу экрана Excel, когда шаблон обновляется. Большинство моих коллег, вероятно, не заметят этого. Поэтому, чтобы держать их в курсе о прогрессе, достигнутом во время исключения макроса, я хотел бы создать индикатор выполнения.

Поэтому я рассмотрел несколько примеров и теперь разработал индикатор выполнения, который отлично работает для поставляемого кода. Для моей конкретной потребности я хочу, чтобы индикатор выполнения обновлялся каждый раз, когда вызывается новая подпрограмма. Я знаю фиксированное количество подпрограмм, которое выполняется во время процедуры (6), и я хочу, чтобы VBA проверил, какое число выполняется. после завершения подпункта 1 прогресс составляет 1/6 = 16,67%, после подпункта 2 - 33% и т. д. и т. д.

Я искал vba методы подсчета количества подпрограмм в коде и способа определить, где в процессе находится процедура.

Могу ли я иметь то, что хотел бы иметь?

У меня есть эти подпрограммы, вызываемые во время выполнения процедуры:

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

1 Ответ

1 голос
/ 12 апреля 2019

Нельзя программно подсчитать количество подпрограмм в куске кода, это, вероятно, превосходит ваши потребности. Большинство, скорее всего, сделают что-то вроде этого:

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_bar - это подпрограмма, которая перерисовывает индикатор выполнения с указанием процентного полного значения в качестве параметра.

...