Подсчитайте количество вспомогательных операций в процедуре для индикатора выполнения

#excel #vba #progress-bar #procedure

#excel #vba #индикатор выполнения #процедура

Вопрос:

У меня есть мой шаблон, который изменяет строку состояния в левом нижнем углу экрана 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 при каждом вызове процедуры.

Ответ №1:

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

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

Комментарии:

1. это то, что я также создавал, когда вы опубликовали свой ответ: counter = 0 Вызовите datawissen counter = counter 1 для i = 1 для рабочих листов. Подсчитайте, если рабочие листы (i). Name = «Output Totaal» Затем вызовите ASW Следующий i counter = counter 1 Вызовите dataplaatsen, где counter будет значением, которое используется для индикатора выполнения. (и разделите на 6, чтобы получить процент)