Excel: установить комбинированные списки 3-8 .visible в false, если ComboBox 1 пуст - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть пользовательская форма с ComboBoxes 1-8, каждый из которых берет текст в назначенных ячейках в ws после UserForm_Activate. Я установил ComboBoxes 2-8 на .Visible=False, если ComboBox1.Value = "".

Есть ли способ использовать сокращенный код для установки .Visible=False для каждого ComboBox без перечисления каждого отдельно? Я добавил ниже то, что я использую сейчас, но я часто создаю формы, подобные этой, и вместо этого предпочел бы использовать тип «Dim i as Integer / For i =», чтобы я мог просто копировать и вставлять, где это необходимо. Заранее спасибо!

If ComboBox1.Value = "" Then
ComboBox2.Visible = False
ComboBox3.Visible = False
ComboBox4.Visible = False
ComboBox5.Visible = False
ComboBox6.Visible = False
ComboBox7.Visible = False
ComboBox8.Visible = False

1 Ответ

1 голос
/ 23 февраля 2020

Косвенная ссылка на элементы управления

Используйте косвенную ссылку через Controls() и попробуйте

Dim i As Long, current As Long
current = 1             ' << change to the combobox to be excepted
For i = 1 to 8          ' loop through all comboboxes
    Me.Controls("ComboBox" & i).Visible = False
Next i
Me.Controls("ComboBox" & current).Visible = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...