The Свойство StatusBar на обекта на приложението в Excel VBA може да се използва за обозначаване на напредъка на дълъг макрос. По този начин можете да уведомите потребителя, че макросът все още работи.
Ситуация:
Макросът, който ще създадем, запълва Range ("A1: E20") със случайни числа.
Добавете следните кодови редове към командния бутон:
1. Първо, декларираме три променливи от тип Integer, наречени i, j и pctCompl.
Dim i As Integer, j As Integer, pctCompl As Integer
2. Добавете двоен цикъл.
За i = 1 до 20
За j = 1 до 5
Следващ j
Следва i
Добавете следните кодови редове (на 3, 4 и 5) към цикъла.
3. Използвайте функцията RandBetween, за да импортирате произволно число между 20 и 100.
Клетки (i, j) .Value = Работен лист Функция.RandBetween (20, 100)
4. Инициализирайте променливата pctCompl. Вторият кодов ред записва стойността на променливата pctCompl и някакъв описателен текст в лентата на състоянието.
pctCompl = (i - 1) * 5 + (j * 1)
Application.StatusBar = "Импортиране на данни …" & pctCompl & "% завършено"
Пример: За i = 3, j = 1, (3 - 1) * 5 + (1 * 1) = 11% е завършено.
5. Използваме метода Wait на обекта Application, за да симулираме дълъг макрос.
Приложение. Изчакайте сега + TimeValue ("00:00:01")
6. За да възстановите стандартния текст на лентата на състоянието, задайте свойството StatusBar на False (извън цикъла).
Application.StatusBar = False
Резултат, когато щракнете върху командния бутон на листа:
Забележка: Можете да прекъснете макроса по всяко време, като натиснете Esc или Ctrl + Break. За по -визуален подход вижте нашата програма за индикатор на напредъка.