Пользовательская форма в Outlook не отвечает (не удается закрыть, событие нажатия кнопки не срабатывает) - PullRequest
0 голосов
/ 20 мая 2009

Я создал простую пользовательскую форму в своем макросе Outlook VBA - я могу сделать форму видимой, используя этот код:

VBA.UserForms.Add (PasswordForm.Name)
PasswordForm.Show (Modal)

... и событие UserForm_Initialize() действительно срабатывает. Но нажатие на кнопку «Отправить» в форме ничего не дает - событие SubmitButton_Click() (которое было создано автоматически двойным нажатием на кнопку в конструкторе) никогда не срабатывает. Кроме того, пользовательская форма имеет обычный маленький красный крестик X в верхнем правом углу окна, но нажатие на это ничего не делает (форма не закрывается или не закрывается).

Есть идеи, что я могу делать не так? Я совсем новичок в VBA.

Ответы [ 3 ]

1 голос
/ 20 мая 2009

Иногда элементы управления в VBA отделены от своих событий. Это может быть потому, что вы переименовали элемент управления или потому, что вы случайно переименовали процедуру события (хотя это редко может произойти по другим причинам). Кроме того, если вы забыли «скомпилировать» перед запуском формы, у вас может быть ошибка в форме, которая вызывает проблему.

Самый простой способ двойной проверки - открыть форму в режиме конструктора, выбрать соответствующую кнопку и нажать клавишу F7. Если создается новая процедура, скопируйте и вставьте свой код, затем просто скопируйте / вставьте в него старый код и избавьтесь от старого.

После того, как вы это сделаете, перейдите в меню «Debug» и нажмите «compile». Если обнаружены какие-либо ошибки, исправьте их еще раз, нажав кнопку «Скомпилировать». Повторяйте, пока он не скомпилируется без жалоб. Затем попробуйте снова запустить форму.

0 голосов
/ 21 мая 2009

В Office 03/07, если вы хотите убедиться, что он показывает модальный режим, установите поведение формы .ShowModal на "True". У меня были проблемы с попыткой сделать форму модальной во время шоу-шоу.

0 голосов
/ 21 мая 2009

ОК, решено: я изменил:

PasswordForm.Show (Modal)

до

PasswordForm.Show

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

Спасибо всем за ваши предложения.

...