Лучше ли показывать пользовательские формы 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.

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

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

Спасибо!