用于为适用的combox着色的常规功能

时间:2015-08-22 13:26:28

标签: excel vba

我在Excel中运行了一些VBA代码,我创建了一个组合框,当没有输入值时,该组合框将变为红色并设置焦点。

 If cmb = "" Then
    cmb.BackColor = vbRed
    lbl.ForeColor = vbRed
    cmb.SetFocus
    Exit Sub

    Else

    cmb.BackColor = vbWhite
   lbl.ForeColor = vbBlack
End If

由于我的表单上有很多组合框,我想构建一个函数或过程,我可以调用任何我想要的组合框。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这是一个常规功能,您可以将ComboBox传递给:

Function ValidateComboBox(c As ComboBox) As Boolean

    If Len(c.Text) = 0 Then
        c.BackColor = vbRed
        Controls(c.Tag).ForeColor = vbRed    ' Set associated label color, also
        c.SetFocus
        ValidateComboBox = False
    Else
        c.BackColor = vbWhite
        Controls(c.Tag).ForeColor = vbBlack  ' Set associated label color, also
        ValidateComboBox = True
    End If

End Function

您可以这样称呼它,例如提交表单时:

' [OK] clicked. Submit form...
Private Sub cmdOK_Click()

    If Not ValidateComboBox(ComboBox1) Then Exit Sub
    If Not ValidateComboBox(ComboBox2) Then Exit Sub
    If Not ValidateComboBox(ComboBox3) Then Exit Sub
    ...

End Sub

棘手的部分是你有一个标签,对应于每个需要更新的组合框。您既可以将函数设计为接受ComboBox控件和Label控件,也可以每次都传递,或者您可以利用组合框的Tag属性,我已经完成了上面的工作。对于每个组合框,只需使用设计器中的Label窗口在其Tag属性中输入相应Properties控件的名称。

例如,如果ComboBox1有一个名为Label1的标签,请在"Label1" ComboBox1 Tag中输入merge.df <- merge(df1, df2, by=c("Region", "Group"), all=T) (不带引号)属性。上面的例程将查找具有该名称的标签/控件,并同样适当地设置其颜色。