UserForm1.Show
показывает форму модально - это означает, что выполнение будет возобновлено только после следующей инструкции после , когда форма закрылась, и это означает, что If UserForm1.Visible = True
всегда будет False
..., если вам повезло.
Если пользователь закрывает модальную форму красной кнопкой [x], тогда объект уничтожается, и If UserForm1
повторно порождает новую, а это экземпляр также не будет виден (потому что он никогда не показывался в первую очередь).
Вы можете попробовать показать форму немодально :
UserForm1.Show vbModeless
Теперь выполняется возобновит в этой области сразу после показа формы ... сделав условие UserForm1.Visible
всегда True
.
Удалить UserForm1.Show
из обработчика BeforeSave
: работа этого обработчика заключается в отмене сохранения, если форма не видна - , чтобы не показывать эту форму безоговорочно! - вы получаете эту ошибку "не удается отобразить модально", потому что вы пытаетесь показать модальную форму, которая уже отображается модально.
Читайте на пользовательской форме s и экземпляры по умолчанию в моем блоге Rubberduck .