一般function为适用的comboxes着色

我在Excel中运行一些VBA代码,我做了一个combobox,它会变成红色,并在没有input值的时候将焦点设置在它上面。

If cmb = "" Then cmb.BackColor = vbRed lbl.ForeColor = vbRed cmb.SetFocus Exit Sub Else cmb.BackColor = vbWhite lbl.ForeColor = vbBlack End If 

由于我的窗体上有很多combobox,我想构build一个函数或过程,我可以调用任何我想要的combobox。 谁能帮忙?

这是一个通用的函数,你可以传递一个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也需要更新。 你可以devise这个函数来同时接受一个ComboBox控件和一个Label控件,并且每次都传递,或者像上面所做的那样利用combobox的Tag属性。 对于每个combobox,只需使用devise器中的“ Properties窗口将相应的Label控件的名称input到它的Tag属性中即可。

例如,如果ComboBox1有一个名为Label1的标签,则将"Label1" (不带引号)input到ComboBox1Tag属性中。 上面的例程将查找具有该名称的标签/控件,并适当地设置其颜色。