Application.EnableEvents = False, но подпрограмма textbox_Enter все еще работает в многостраничной пользовательской форме VBA - PullRequest
2 голосов
/ 19 марта 2019

У меня есть многостраничный ящик пользователя с именем MultiPage1 (по умолчанию).

Он состоит из 6 страниц, каждая из которых имеет сотни текстовых полей, и все они отлично работают ...

У меня есть одна проблема.Когда Multipage.Value = 3 кажется, что запускается событие textbox_Enter, независимо от того, что я делаю, чтобы убедиться, что текстовое поле не имеет фокуса во всем сериале.

Я, конечно, пытался Application.EnableEvents = False, но я считаю, что пользовательские формы не вызывают события в традиционном смысле этого слова.

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

Интересно ... когда я переименовал хлопотное текстовое поле, удалив его, и заменив его новым текстовым полем с тем же именем ... проблемапереместился к следующему текстовому полю в последовательности.

TextBoxTEST1_Enter больше не срабатывает, а теперь вместо него срабатывает TextBoxTEST2_Enter.

Имея более 300 текстовых полей, я не хочу их заново создавать!

Есть идеи?!

Большое спасибо,

Фил

1 Ответ

1 голос
/ 19 марта 2019

Избегать автоматической активации текстового поля

Простой обходной путь заключается в присвоении нуля .Width, нуля .Height и нуля .TabIndex только одному манекену текстовое поле на страницу.

Возможное соглашение об именах может быть Dummy1 на 1-й странице, Dummy2 на 2-й странице и т. Д.

Пример кода

Private Sub UserForm_Initialize()
    Dim i&
    For i = 1 To Me.MultiPage1.Pages.Count
        Me.Controls("Dummy" & i).Width = 0
        Me.Controls("Dummy" & i).Height = 0
        Me.Controls("Dummy" & i).TabIndex = 0
    Next i
End Sub

Примечание

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...