一般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到ComboBox1
的Tag
属性中。 上面的例程将查找具有该名称的标签/控件,并适当地设置其颜色。