Я хочу создать индикатор выполнения с помощью vba, чтобы визуализировать ход моего кода. Поэтому я создал простую пользовательскую форму PB, которая содержит среди прочего 2 ярлыка. Длина этих этикеток меняется много раз, чтобы показать ход выполнения кода. Моя проблема в том, что я хочу изменить размер этих меток, но изменение не видно. Есть несколько ярлыков, которые несколько раз переименовываются, но у меня такая же проблема.Обновление пользовательской формы Excel не работает
Итак, вот мой сокращенный код, который показывает только строки, относящиеся к пользовательской ПБ.
Этот код находится в стандартном модуле и содержит подлодку Start, который является отправной точкой для моего процесса:
Public Sub Start()
PB.Show
PB.Label2.Width = 100
PB.Label5.Width = 100
PB.Caption = "Please wait, files are being analyzed!" 'Header of the userform
PB.Label7.Caption = "Testing"
PB.Repaint
DoEvents
End Sub
Существует только немного кода внутри модуля UserForm PB:
Private Sub UserForm_Activate()
Label2.Width = 0
Label5.Width = 0
End Sub
Есть только 2 строки, но эти изменения в ширину = 0 выполняются. Когда это вспомогательное устройство будет завершено, будет выполнена остальная часть начального юнита. Ширина 100 присваивается меткам, некоторые другие метки переименовываются, но эти изменения остаются невидимыми.
Как вы видите, я попытался использовать Repaint и DoEvents, но это не помогло в моем случае. Мне нужно найти способ манипулировать пользовательской формой из внешнего модуля (а не модуля пользовательской формы). Вы можете мне помочь? У вас есть идея?
Не ответ на ваш вопрос, но альтернатива .. http://stackoverflow.com/questions/10782394/pop-up-the-excel-statusbar/10787496#10787496 –
Спасибо за эту ссылку, но я уже использовал другую образец самостоятельно. Образец работал, но когда я пытался использовать части этого кода, он больше не работал. См. Мой ответ ниже на мой вопрос, где я объяснил, как я получил его работу. – Eleandro