É melhor mostrar ProgressBar UserForms no VBA como modal ou sem modelo?
É melhor mostrar ProgressBar UserForms no VBA como modal ou sem modelo? Quais são as melhores práticas para o desenvolvimento de indicadores de progresso no VBA?
UserForms sem modelo requerem o uso deApplication.Interactive = False
, enquanto os Modal UserForms, por sua natureza, bloqueiam qualquer interação com o aplicativo até que o procedimento principal seja concluído ou cancelado.
E seApplication.Interactive = False
é usada, no entanto, a tecla Esc interrompe a execução do código, portanto, o uso deApplication.EnableCancelKey = xlErrorHandler
e tratamento de erros (Err.Number = 18
) é necessário no formulário de usuário e no procedimento de chamada.
Os procedimentos de chamada intensiva de recursos também podem resultar emCommandButton_Click
eUserForm_Activate
eventos falham em UserForms sem modelo.
Em geral, os indicadores de progresso que usam UserForms modais parecem mais simples, porque o código que está sendo executado está totalmente contido no módulo UserForm e há menos necessidade de passar variáveis.
O problema, no entanto, com o uso de UserForms modais para indicadores de progresso é que é necessário um módulo UserForm separado para cada procedimento que precise de um indicador de progresso, porque o procedimento de chamada precisa estar dentro do procedimento UserForm_Activate.
Portanto, embora seja possível ter um único indicador de progresso reutilizável em um UserForm sem modelo, ele será menos confiável do que executar o código em vários UserForms modais.
Qual caminho é melhor?
Obrigado!