Строка состояния VBA

Строка состояния Excel VBA

Статус бар — это свойство vba, которое используется для отображения состояния завершенного или завершенного кода во время выполнения, оно отображается в левом углу рабочего листа при выполнении макроса, а состояние отображается в процентах к Пользователь.

Когда макрос отстает, ждать, не зная, сколько времени это займет, неприятно. Если вы находитесь на этапе выполнения кода, вы можете по крайней мере рассчитать время, которое это займет. Итак, идея состоит в том, чтобы иметь статус барСтатус барКак следует из названия, строка состояния отображает текущий статус в правом нижнем углу Excel; это настраиваемая панель, которую можно настроить в соответствии с потребностями пользователя.читать далее показывающий процент работы, выполненной на данный момент, как показано ниже.

Пример строки состояния VBA 1.11

Что такое Application.StatusBar?

Application.StatusBar — это свойство, которое мы можем использовать в кодировании макросов, чтобы показать статус, когда макрос выполняется за сценой.

Это не так красиво, как наш «индикатор выполнения VBA», но достаточно хорошо, чтобы узнать статус проекта макроса.

VBA-Статус-Бар

Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой
Например:
Источник: панель состояния VBA (wallstreetmojo.com).

Пример создания строки состояния с помощью VBA

Вы можете скачать этот шаблон строки состояния VBA Excel здесь — Шаблон Excel строки состояния VBA

Выполните следующие шаги, чтобы создать строку состояния.

Шаг 1: Первый, определить переменную VBAОпределите переменную VBAОбъявление переменной необходимо в VBA, чтобы определить переменную для определенного типа данных, чтобы она могла хранить значения; любая переменная, не определенная в VBA, не может содержать значения.читать далее чтобы найти последнюю использованную строку на листе.

Код:

Sub Status_Bar_Progress()

  Dim LR As Long

End Sub
Пример строки состояния VBA 1

Шаг 2: Найдите последнюю использованную строку, используя приведенный ниже код.

Код:

Sub Status_Bar_Progress()

  Dim LR As Long
  LR = Cells(Rows.Count, 1).End(xlUp).Row

End Sub
Пример 1.1

Шаг 3: Далее нам нужно определить переменную для хранения количества отображаемых баров.

Код:

Sub Status_Bar_Progress()

  Dim LR As Long
  LR = Cells(Rows.Count, 1).End(xlUp).Row
  Dim NumOfBars As Integer

End Sub
Пример строки состояния VBA 1.2

Здесь будет указано, сколько полос разрешено отображать в строке состояния.

Шаг 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
Пример 1.3

Шаг 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 Integer
  Dim PercetageCompleted As Integer

End Sub
Пример строки состояния VBA 1.4

Шаг 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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

End Sub
  Пример 1.5

Что это будет делать, это добавит скобку ([) and add 45 spaces characters before ends the text with closing bracket (]).

Выполните код, и мы увидим ниже в строке состояния Excel VBA.

Вывод:

Пример строки состояния VBA 1.6

Шаг 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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For k = 1 To LR

  Next k

End Sub
Пример строки состояния VBA 1.7.0

Шаг 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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For k = 1 To LR

  PresentStatus = Int((k / LR) * NumOfBars)

  Next k

End Sub
  Пример 1.8.0

Мы использовали «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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For k = 1 To LR

  PresentStatus = Int((k / LR) * NumOfBars)
  PercetageCompleted = Round(PresentStatus / NumOfBars * 100, 0)

  Next k

End Sub
  Пример 1.9.0

В данном случае мы воспользовались КРУГЛЫЙ функция в 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 As Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For 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.

Code:

Application.StatusBar = "[" & String(PresentStatus, "|")

Next, we need to add space characters between one straight line to the other, so this will be calculated by using “NumOfBars” minus “PresentStatus.”

Code:

Application.StatusBar = "[" & String(PresentStatus, "|") & 
Space(NumOfBars - PresentStatus)

Then we close out the bracket “]». Затем мы объединили значение переменной «PercentageCompleted» во время выполнения цикла со словом перед ним как «% Completed».

Код:

Application.StatusBar = "[" & String(PresentStatus, "|") & 
Space(NumOfBars - PresentStatus)& _"] " & PercetageCompleted & "% Complete"

Когда код работает, мы разрешаем пользователю доступ к рабочему листу, поэтому нам нужно добавить «Делать события».

Код:

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 Integer
 Dim PercetageCompleted As Integer

 Application.StatusBar = "[" & Space(NumOfBars) & "]"

 Dim k As Long
 For 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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For 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

  Next 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 Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For 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 here

  If k = LR Then Application.StatusBar = False

  Next k

End Sub

Хорошо, мы закончили с кодированием. Когда вы выполняете код здесь, вы можете видеть, как строка состояния обновляет свой процент выполнения.

Вывод:

Пример строки состояния VBA 1.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 As Integer
  Dim PercetageCompleted As Integer

  Application.StatusBar = "[" & Space(NumOfBars) & "]"

  Dim k As Long
  For 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 here

  If k = LR Then Application.StatusBar = False
  Next k

End Sub

То, что нужно запомнить

  • Мы можем добавить только те задачи, которые необходимо выполнить в цикле.
  • Вы можете добавить задачи, которые вам нужно сделать после добавления процедуры «Выполнение событий».

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *