Статус бар — это свойство vba, которое используется для отображения состояния завершенного или завершенного кода во время выполнения, оно отображается в левом углу рабочего листа при выполнении макроса, а состояние отображается в процентах к Пользователь.
Когда макрос отстает, ждать, не зная, сколько времени это займет, неприятно. Если вы находитесь на этапе выполнения кода, вы можете по крайней мере рассчитать время, которое это займет. Итак, идея состоит в том, чтобы иметь статус барСтатус барКак следует из названия, строка состояния отображает текущий статус в правом нижнем углу Excel; это настраиваемая панель, которую можно настроить в соответствии с потребностями пользователя.читать далее показывающий процент работы, выполненной на данный момент, как показано ниже.
Что такое Application.StatusBar?
Application.StatusBar — это свойство, которое мы можем использовать в кодировании макросов, чтобы показать статус, когда макрос выполняется за сценой.
Это не так красиво, как наш «индикатор выполнения VBA», но достаточно хорошо, чтобы узнать статус проекта макроса.
Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой Например: Источник: панель состояния VBA (wallstreetmojo.com).
Выполните следующие шаги, чтобы создать строку состояния.
Шаг 1: Первый, определить переменную VBAОпределите переменную VBAОбъявление переменной необходимо в VBA, чтобы определить переменную для определенного типа данных, чтобы она могла хранить значения; любая переменная, не определенная в VBA, не может содержать значения.читать далее чтобы найти последнюю использованную строку на листе.
Код:
Sub Status_Bar_Progress()
Dim LR As LongEnd Sub
Шаг 2: Найдите последнюю использованную строку, используя приведенный ниже код.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Шаг 3: Далее нам нужно определить переменную для хранения количества отображаемых баров.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As IntegerEnd Sub
Здесь будет указано, сколько полос разрешено отображать в строке состояния.
Шаг 4: Для этой переменной сохраните предел бара как 45.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
End Sub
Шаг 5: Определите еще две переменные для хранения текущего состояния и процента выполнения при выполнении макроса.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As IntegerEnd Sub
Шаг 6: Теперь, чтобы включить строку состояния, используйте приведенный ниже код.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
End Sub
Что это будет делать, это добавит скобку ([) and add 45 spaces characters before ends the text with closing bracket (]).
Выполните код, и мы увидим ниже в строке состояния Excel VBA.
Вывод:
Шаг 7: Теперь нам нужно включить Для следующего цикла в VBAДля следующего цикла в VBAВсе языки программирования используют цикл VBA For Next. После оператора FOR в этом цикле есть критерий, и код повторяется до тех пор, пока критерий не будет достигнут. читать далее для расчета процента выполнения макроса. Определите переменную для запуска макроса.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
Next k
End Sub
Шаг 8: Внутри цикла нам нужно вычислить, что такое «текущее состояние». Итак, для переменной «PresentStatus» нам нужно применить формулу, как показано ниже.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
Next k
End Sub
Мы использовали «INT», чтобы в результате получить целочисленное значение.
Шаг 9: Теперь нам нужно рассчитать, что «Процент завершения», поэтому мы можем применить формулу, как показано ниже.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Next k
End Sub
В данном случае мы воспользовались КРУГЛЫЙ функция в excel, потому что независимо от десятичных разрядов нам нужно округлить до ближайшего нулевого значения, поэтому здесь использовалось ОКРУГЛ с нулем в качестве аргумента.
Шаг 10: Мы уже вставили начальную и конечную скобки в строку состояния, теперь нам нужно вставить обновленный результат, и это можно сделать с помощью приведенного ниже кода.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus AsIntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Application.StatusBar = "[" & String(PresentStatus, "|") &
Space(NumOfBars - PresentStatus) & _"] " & PercetageCompleted & "% Complete"
Next k
End Sub
В приведенном выше коде мы вставили открывающую скобку «[“ and to show the progress of the macro, we have inserted a straight line (|) by using the STRING function. When the loop is running, it will take the “PresentStatus,” and those many straight lines will be inserted in the status bar.
Then we close out the bracket “]». Затем мы объединили значение переменной «PercentageCompleted» во время выполнения цикла со словом перед ним как «% Completed».
Когда код работает, мы разрешаем пользователю доступ к рабочему листу, поэтому нам нужно добавить «Делать события».
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Application.StatusBar = "[" & String(PresentStatus, "|") &
Space(NumOfBars - PresentStatus) & _ "] " & PercetageCompleted & "% Complete"
DoEvents
Next k
End Sub
Шаг 11: После добавления «Do Events» мы можем написать коды, которые необходимо выполнить здесь.
Например, я хочу вставить в ячейки серийные номера, поэтому я напишу код, как показано ниже».
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Application.StatusBar = "[" & String(PresentStatus, "|")
& Space(NumOfBars - PresentStatus) & _"] " & PercetageCompleted & "% Complete"
DoEvents
Cells(k, 1).Value = k
'You can add your code hereNext k
End Sub
Шаг 12: Прежде чем мы выйдем из цикла, нам нужно добавить еще одну вещь, т. Е. Если цикл находится рядом с последней использованной строкой на листе, нам нужно сделать строку состояния как обычно.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Application.StatusBar = "[" & String(PresentStatus, "|") &
Space(NumOfBars - PresentStatus) & _"] " & PercetageCompleted & "% Complete"
DoEvents
Cells(k, 1).Value = k
'You can add your code here
'You can Add your code here
'You can Add your code here
'You can add your code here
'You can add your code here
'You can add your code hereIf k = LR Then Application.StatusBar = False Next k
End Sub
Хорошо, мы закончили с кодированием. Когда вы выполняете код здесь, вы можете видеть, как строка состояния обновляет свой процент выполнения.
Вывод:
Ниже приведен код для вас.
Код:
Sub Status_Bar_Progress()
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
Dim NumOfBars As Integer
NumOfBars = 45
Dim PresentStatus As IntegerDim PercetageCompleted As Integer
Application.StatusBar = "[" & Space(NumOfBars) & "]"
Dim k As LongFor k = 1 To LR
PresentStatus = Int((k / LR) * NumOfBars)
PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)
Application.StatusBar = "[" & String(PresentStatus, "|") &
Space(NumOfBars - PresentStatus) & _"] " & PercetageCompleted & "% Complete"
DoEvents
Cells(k, 1).Value = k
'You can add your code here
'You can Add your code here
'You can Add your code here
'You can add your code here
'You can add your code here
'You can add your code hereIf k = LR Then Application.StatusBar = FalseNext k
End Sub
То, что нужно запомнить
Мы можем добавить только те задачи, которые необходимо выполнить в цикле.
Вы можете добавить задачи, которые вам нужно сделать после добавления процедуры «Выполнение событий».