我在Excel中运行了一些VBA代码,我创建了一个组合框,当没有输入值时,该组合框将变为红色并设置焦点。
If cmb = "" Then
cmb.BackColor = vbRed
lbl.ForeColor = vbRed
cmb.SetFocus
Exit Sub
Else
cmb.BackColor = vbWhite
lbl.ForeColor = vbBlack
End If
由于我的表单上有很多组合框,我想构建一个函数或过程,我可以调用任何我想要的组合框。 有人可以帮忙吗?
答案 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)
(不带引号)属性。上面的例程将查找具有该名称的标签/控件,并同样适当地设置其颜色。