VBA Как динамически генерировать имя кнопки выбора? - PullRequest
0 голосов
/ 29 сентября 2019

VBA Мне нужно динамически генерировать имя кнопки опции.Кнопка выбора - это кнопка выбора управления формой в пользовательской форме. У меня есть следующий код в модуле, а не в коде ниже в пользовательской форме

        Sub Test_Form()

            Dim MyOptionButton As String
            Dim OptionButton As String
            Dim i As Integer

       i = 1

            MyOptionButton = OptionButton & i
            'I'm hoping the compiler will understand this as "OptionButton1"

            If Range("C2").Value = 5 Then
                MyOptionButton.Value = True
               'Error message here:  "invalid qualifier"

            End If

    frmTest_Form.Show
End Sub

Похоже, что компилятор должен иметь контрольимя как «OptionButton1» предопределено, и MyOptionButton не читается как «OptionButton1».

Заранее благодарим за помощь.

1 Ответ

2 голосов
/ 29 сентября 2019

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

Вы попадаете на кнопку опции, ссылаясь на нее изколлекция Controls пользовательской формы.

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

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

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

Dim myForm As frmTestForm
Set myForm = New frmTestForm
Dim myOptButton As Control
Set myOptButton = myForm.Controls("OptionButton1")
If ThisWorkbook.Worksheets("mySheet").Range("C2").Value = 5 Then
    myOptButton.Value = True
Else
    myOptButton.Value = False
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...