Лучше ли показывать пользовательские формы ProgressBar в VBA как модальные или немодальные?

Лучше ли показывать пользовательские формы ProgressBar в VBA как модальные или немодальные? Каковы лучшие практики для разработки индикаторов прогресса в VBA?

Немодальные пользовательские формы требуют использованияApplication.Interactive = Falseтогда как модальные пользовательские формы по самой своей природе блокируют любое взаимодействие с приложением, пока основная процедура не завершится или не будет отменена.

ЕслиApplication.Interactive = False используется, однако, клавиша Esc прерывает выполнение кода, поэтому использованиеApplication.EnableCancelKey = xlErrorHandler и обработка ошибок (Err.Number = 18) требуется как в пользовательской форме, так и в вызывающей процедуре.

Ресурсоемкие процедуры вызова также могут привести кCommandButton_Click а такжеUserForm_Activate события осечки в немодальных пользовательских формах.

В целом, индикаторы прогресса, которые используют модальные пользовательские формы, кажутся более простыми, потому что выполняемый код полностью содержится в модуле UserForm, и для передачи переменных меньше необходимости.

Однако проблема использования модальных пользовательских форм для индикаторов прогресса заключается в том, что для каждой процедуры, для которой требуется индикатор выполнения, требуется отдельный модуль UserForm, поскольку вызывающая процедура должна находиться внутри процедуры UserForm_Activate.

Таким образом, хотя в немодальной пользовательской форме можно иметь один повторно используемый индикатор прогресса, он будет менее надежным, чем выполнение кода из нескольких модальных пользовательских форм.

Какой способ лучше?

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос