Combobox Excel:设置组合框3-8。如果组合框1为空,则可见false

Combobox Excel:设置组合框3-8。如果组合框1为空,则可见false,combobox,userform,shortcut,Combobox,Userform,Shortcut,我有一个带有组合框1-8的UserForm,每个组合框在UserForm\u激活时在ws中的指定单元格中拾取文本。我已将Combobox2-8设置为。如果ComboBox1.Value=“”,则可见=False 是否有一种方法可以使用缩写代码为每个组合框设置.Visible=False,而不单独列出每个组合框?我在下面添加了我现在正在使用的内容,但我经常创建这样的表单,并且更愿意使用“Dim I as Integer/For I=”type thing,这样我就可以在需要的地方复制和粘贴。提前谢

我有一个带有组合框1-8的UserForm,每个组合框在UserForm\u激活时在ws中的指定单元格中拾取文本。我已将Combobox2-8设置为
。如果ComboBox1.Value=“”,则可见=False

是否有一种方法可以使用缩写代码为每个组合框设置
.Visible=False
,而不单独列出每个组合框?我在下面添加了我现在正在使用的内容,但我经常创建这样的表单,并且更愿意使用“Dim I as Integer/For I=”type thing,这样我就可以在需要的地方复制和粘贴。提前谢谢你

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

控件的间接引用

通过
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
Dim i长度与当前长度相同

当前=1'发布了答案;顺便说一句,使用Long而不是Integer没有什么区别(特别是使用行或列索引,您是安全的:)@谢谢-它工作得非常好!有没有办法将此更改为只影响某些CBs?喂,每隔一个,或每三个,等等?不客气,洛伦斯科尔斯关于您的问题:当然可以,取决于您的命名约定,例如从CB1、CB4、CB7开始。。。到CBn。在这种情况下,您可以a)为i=1到8步骤3向循环中添加
条件,或b)在
中为
-
下一个
循环执行检查,例如,通过
如果(i-1)Mod 3=0,则
<代码>如果结束
;只需玩一下测试:-)