Как сгенерировать контроль из контрольного имени в VBA? - PullRequest
0 голосов
/ 19 апреля 2020

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

Public Sub text_initialize(ByVal CurrentPage As String)
    Dim ctrl As Control
    For Each ctrl In UserForm1.MultiPage1.Controls(CurrentPage).Controls
        'some code here
    Next ctrl
End Sub

и в вызове я сделал это:

text_initialize "Page1"

Я обнаружил, что решение "Controls (CurrentPage)" упомянуто для текстовых полей, но, похоже, оно не работает для страниц!

И если есть какой-либо другой способ передать страницу в качестве аргумента, так что я могу изменить все элементы управления на нем, я хотел бы знать.

1 Ответ

0 голосов
/ 19 апреля 2020

Спасибо @CherryDT, он обнаружил в моем коде две ошибки: первую, что я должен использовать Page1 вместо page1 и Pages вместо Controls, и я обнаружил, что по какой-то причине мне пришлось заменить MultiPage1 на UserForm1.MultiPage1, поэтому правильный код теперь:

Public Sub text_initialize(ByVal CurrentPage As String)
    Dim ctrl As Control
    For Each ctrl In UserForm1.MultiPage1.Controls(CurrentPage).Controls
        'some code here
    Next ctrl
End Sub

И назовите его так:

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