如何用很少的代码更改多个组合框

时间:2013-05-17 16:39:02

标签: vba combobox

这是我的问题。

我有一个包含10个comboBox的userform。 而不是选择案例al那些组合框一个接一个 有一种聪明的方法来改变多个组合框属性,例如backcolor或fontcolor?

例如:

Sub ChangeMultipleComboBoxes()
Dim comboB as control

For Each comboB In Me.Controls
If TypeName(comboB) = "ComboBox" Then
comboB.BackColor = vbRed
End If
Next comboB

End Sub

问题在于,对于comboB,我似乎无法找到任何属性来更改它的背景色或任何其他属性。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

正如扎伊德所说,你的代码有效。即使您可以像在代码中一样使用这些属性,但只有当ComboBox特定属性声明为Control时,才会获得智能感知。 (请注意,所有控件共有的属性,例如Caption都可用。)

要获取所有ComboBox属性的智能感知,一旦您确定它是什么,就将Control重新声明为ComboBox

Private Sub UserForm_Click()
Dim ctl As MSForms.Control
Dim comboB As MSForms.ComboBox

    For Each ctl In Me.Controls
        If TypeName(ctl) = "ComboBox" Then
        're-declare it as a ComboBox
        Set comboB = ctl
            'Now you get IntelliSens
            comboB.BackColor = vbRed
        End If
    Next ctl
    End Sub