Как определить следующую вкладку в VBA UserForm? - PullRequest
3 голосов
/ 06 декабря 2009

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

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

Но ... как я могу найти следующий элемент управления в порядке вкладок после данного элемента управления? Есть ли способ сделать это, или я должен перечислить все элементы управления и выяснить это для себя?

Ответы [ 4 ]

4 голосов
/ 31 декабря 2009

Я ценю, что это относится к «перечислению всех элементов управления», но это довольно просто, и я прилагаю код для полноты:

Private Sub CheckBox1_Click()
    Dim ctl As Control
    For Each ctl In Me.Controls
        If ctl.TabIndex = Me.ActiveControl.TabIndex + 1 Then
            ctl.SetFocus
            Exit For
        End If
    Next
End Sub
1 голос
/ 06 декабря 2009

Как другой взгляд на это.

Можете ли вы не использовать текстовое поле, которое вы хотите сфокусировать, и установить это имя в checkbox.tag

тогда в вашем vba коде используйте

DoCmd.GoToControl CheckBox.Tag

Где CheckBox.Tag является Textbox.Name ?

EDIT:

ОК, я нашел это

SendKeys "{Enter}", True

на VBA-код для перехода к следующему элементу управления? Это должно быть Eeeasy

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

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

Нажмите на саму форму пользователя, затем щелкните правой кнопкой мыши и выберите «порядок вкладок». Затем вы можете переместить каждый элемент в пользовательской форме в любую нужную вам позицию, не прибегая к сложным и нестабильным программным приемам.

0 голосов
/ 20 ноября 2013

У меня были проблемы с

SendKeys "{Enter}", True

Немного поэкспериментировав я нашел это работает

SendKeys "{TAB}", True

Одно предупреждение ... если вы находитесь в VBE, просматривая код и просматривая его в форме, SendKeys выполняется, выполняется в коде. Сначала я запутался, почему мой код стал выглядеть странно, например, дополнительный интервал и дополнительные линии!

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