Проверка значения текстового поля в многостраничной пользовательской форме

У меня есть пользовательская форма с несколькими страницами, каждая с текстовыми полями, которые я хочу убедиться, что это числа, прежде чем я верну их обратно на лист.

У меня есть другие обычные пользовательские формы, которые делают это:

Private Sub myTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    OnlyNumbers
End Sub

Private Sub OnlyNumbers()

    If TypeName(Me.ActiveControl) = "TextBox" Then
        With Me.ActiveControl
            If Not IsNumeric(.Value) And .Value <> vbNullString Then
                MsgBox "Sorry, only numbers allowed"
                .Value = vbNullString
            End If
        End With
    End If

End Sub

Это отлично работает, но когда я пытаюсь сделать что-то подобное с этой многостраничной пользовательской формой, это не работает.

я пытался использовать

Me.ActiveControl.ActiveControl

но получите ошибку времени выполнения «Объект не поддерживает это свойство или метод». Это будет работать, когда текстовые поля находятся внутри фрейма, но кажется, что страницы обрабатываются по-разному.


person KingKong    schedule 14.06.2016    source источник


Ответы (1)


Да, этот хитрый. Элемент управления MultiPage можно рассматривать как родительский для элементов управления, расположенных поверх него. Что вам нужно сделать, это сначала выбрать элемент управления MultiPage, а затем выбрать активный элемент управления оттуда.

Это выглядит как:

Me.MultiPage1.Pages(Me.MultiPage1.Value).ActiveControl.Name

Свойство Pages позволяет вам выбрать, какую страницу вы хотите выбрать. Вы можете получить это, используя индекс элемента управления MultiPage (индекс начинается с 1). Затем вы можете вызвать ActiveControl и получить ожидаемый элемент управления.

Надеюсь, поможет!

person Ryan Wildry    schedule 15.06.2016
comment
Я еще немного поиграл и нашел кое-что, что работает: Me.MultiPage1.SelectedItem.ActiveControl Я думаю, что ваш способ тоже сработает. Спасибо. - person KingKong; 15.06.2016
comment
Да, это тоже должно работать. Другой подход позволяет вам выбирать элементы управления, которые не являются частью активной многостраничной страницы. - person Ryan Wildry; 15.06.2016