版权声明:可以任意转载,转载时请务必以超链接形式标明如下文章原始出处和作者信息及本声明
作者:xixi
出处:http://blog.youkuaiyun.com/slowgrace/archive/2008/10/02/3009505.aspx
窗体控件的条件格式是指当指定的条件满足时,以指定的格式显示窗体控件,如以指定的背景色、指定的字体等显示控件及其内容。
可以手工设置条件格式,方法是在窗体视图或数据表视图下,选择要设置格式的控件,然后选菜单格式-》条件格式。

比如上图各combobox的条件格式设置如下:

第一条是,当控件有焦点时,设置背景色为草绿色。第二条是当控件值为NULL时设置控件背景色为浅灰色。第三条是当某函数的值为真时,设置控件的背景颜色为米黄色。
这里要注意的是:
- ACCESS只允许有3条条件。
- 条件的类型有3种:一种是控件获得焦点时;一种是表达式为真时,需要用户提供表达式;一种是控件关联的字段值满足某条件时(<, >, <=, >=, between, equal, not between, not equal), 之后用户可以提供相应的数值区间
- 获得焦点的条件必须是第一条
这里我想重点讲讲表达式的用法,我是折腾了好久才弄明白的。其实我的要求也简单,就是希望控件值为NULL的时候显示底板灰色。一开始我用字段值=NULL做判断,不行;后来用isnull函数,试了很多写法,无意中发现上面这种写法可以使ACCESS正确理解我的意思,就是根据控件值的变化,实时的给ISNULL函数传值。
isNull([cbo5])
其中在方括号中的cbo5是控件名。这种函数也可以是自己编写的函数,比如我上面第3个条件用的就是自己的函数,仍然用控件的实时值作为它的参数:
SetYellowOrNot([cbo5])
可以在程序里设置条件格式,看下面的代码:
- Public Sub SetCboCondition()
- Dim i As Integer, j As Integer
- Dim cboX As Access.ComboBox
- Dim objFCs As Access.FormatConditions
- For i = 1 To 8
- Set cboX = Me.Controls("cbo" & i)
- Set objFCs = cboX.FormatConditions
- ' Bulk remove all current FormatConditions
objFCs.Delete - objFCs.Add acFieldHasFocus
- objFCs(0).BackColor = RGB(146, 234, 58)
- objFCs.Add Type:=acExpression, Expression1:="isNull([cbo" & i & "])"
- objFCs(1).BackColor = RGB(230, 231, 229)
- objFCs.Add Type:=acExpression, Expression1:="SetYellowOrNot([cbo" & i & "])"
- objFCs(2).BackColor = RGB(245, 248, 116)
- Next i
- Set objFCs = Nothing
- Set cboX = Nothing
- End Sub
这段代码一次性的给8个combobox控件(cbo1, cbo2, …, cbo8)设置了上面3个条件格式。注意formatconditons对象的add方法的第一个参数是type:用acFieldHasFocus值时,不需要提供其他参数;用acExpression时,则需要提供表达式。这里这个表达式的写法也是我试了N次才试出来的,就是要把整个表达式作为一个字符串传给它,代码里写得很清楚,请对照这个代码和上面条件格式图里的设置看,就不多说了哈。
写完这篇文章,又发现了几个比较好的相关文章,列做参考资料如下:
- http://office.microsoft.com/zh-cn/access/HA102081332052.aspx这篇文章主要讲了通过用户界面进行条件格式设置的细节,非常详尽系统。
- http://office.microsoft.com/zh-cn/access/HP052691692052.aspx?pid=CH063662092052这篇文章讲可以通过格式刷来复制条件格式
- http://www.diybl.com/course/7_databases/access/ac_ch/2007614/51200.html这篇文章讲了如何通过select case语句在程序里扩展条件格式,突破条件格式只能有3个的局限
本文介绍了如何在ACCESS中为窗体控件设置条件格式,包括当控件有焦点、值为NULL或满足特定函数条件时的格式设定。通过示例代码展示了如何在程序中批量设置多个控件的条件格式,同时分享了相关参考资料,帮助读者深入理解ACCESS的条件格式功能。
1318

被折叠的 条评论
为什么被折叠?



