Свойство StatusBar объекта Application в Excel VBA можно использовать для отображения прогресса длительного макроса. Таким образом, вы можете позволить ноу пользователей, что макрос все еще работает.

Ситуация:

Макрос мы будем создавать заполнит Range ( «A1: E20») со случайными числами.

Excel VBA StatusBar Property Example

Добавьте следующие строки кода к командной кнопке:

  1. Во-первых, мы объявляем три переменные типа Integer, по имени I, J и pctCompl.

Dim i As Integer, j As Integer, pctCompl As Integer
  1. Добавьте двойную петлю.

For i = 1 To 20

For j = 1 To 5

Next j

Next i

Добавьте следующие строки кода (в 3, 4 и 5) к петле.

  1. С помощью функции RANDBETWEEN импортировать случайное число в диапазоне от 20 до 100.

Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
  1. Инициализировать переменную pctCompl. Вторая строка кода записывает значение переменной pctCompl и описательного текст в строке состояния.

pctCompl = (i - 1)  5 + (j  1)

Application.StatusBar = "Importing Data.. " & pctCompl & "% Completed"

Пример: I = 3, J = 1, (3 — 1) 5 + (1 1) = 11% было завершено.

  1. Мы используем метод Wait объекта Application, чтобы имитировать длинный макрос.

Application.Wait Now + TimeValue("00:00:01")
  1. Для того, чтобы восстановить текст строки состояния по умолчанию, установите свойство StatusBar в Ложные (вне цикла).

Application.StatusBar = False

Результат при нажатии на кнопку управления на листе:

Excel VBA StatusBar Property Result

Примечание: Вы можете ссылка: / VBA-примеры прерываний-а-макро [прерывание макроса] в любое время, нажав клавишу Esc или Ctrl + Break. Для более наглядного подхода см нашей ссылки: / VBA-примеры-прогресс-индикатор программа [Индикатор Прогресса].