在ACCESS中扩展条件格式的功能
作 者:朱亦文(译)
摘 要:在 Microsoft access 中使用用户接口及通过编程创建条件格式。探讨在不同环境下扩展条件格式的编程方法。
正 文:
Frank C. Rice著 朱亦文译
Microsoft 公司
2002年3月
应用于: Microsoft® access 2000 及以后版本
摘 要: 在 Microsoft access 中使用用户接口及通过编程创建条件格式。探讨在不同环境下扩展条件格式的编程方法。
简介
自 Microsoft® access 2000 开始,能够在 combo box 和 text box 控件上应用条件格式。这将允许按指定的条件改变包括在这些控件中的数据的原始显示特性,如背景色和加粗。
有两个方法创建和应用条件格式。其一,可以先选择控件,然后在[ 格式 ]菜单上点击[ 条件格式 ]。其二,使用 Microsoft Visual Basic® for Applications (VBA),也能创建使用条件格式的[ FormatCondition ]对象实例并把它们加入到[ FormatCondition ]对象集合中。
每个做了条件格式的控件最少有两个格式--一个默认格式和一个当指定条件为 True 时的指定格式。一个控件可以有多至三个的指定格式条件。这三个条件的限制可由 VBA 代码编程在不同的环境下确定条件的值来克服。本文第一个示例将通过用户界面来创建条件格式。我们将会看到在运行时使用 VBA 代码来创建条件格式改变格式条件这种更好的方法。
通过用户界面创建条件格式
在<格式>菜单上的<条件格式>菜单提供一个简单的方法创建和应用多至三个条件格式。当点击<格式>菜单上的<条件格式>,将出现<条件格式>对话框,如图:
<默认格式 Default Formatting>区域显示控件在没有使用任何指定条件的情况下的格式。<条件 1 Condition 1>区域允许添加指定的条件格式。当要添加条件格式时,点击[ 添加 Add ]按钮,对话框将最多扩展至三个条件格式。
<条件格式>对话框提供六个格式控件来帮助指定每一个条件格式。从控件行的最左侧开始,有加粗、斜体、下划线、背景色以及前景色,最后一个是控件控件的启用状态(允许和禁止)。在最左边的下拉列表框允许选择<字段值为>、<表达式为>或者<字段有焦点>。也能通常操作符如:相等(=)、大于(>)、位于区间(Between)及更多。如果在一个计算字段上应用条件格式,必须使用标准的 VBA 操作符书写表达式。
如果格式化条件要求一个表达式,可以使用表达式生成器来帮你建立表达式。
图 2 举例说明在一个窗体中使用条件格式格式化与之相关的 Special Customer 文本框。
基于 Total 文本框的值作为格式化条件改变背景色。在该情形中,如果 Total 文本框的计算值介于 300 到 399 之间,文本框显示为绿色。图3 举例说明在<条件格式>对话框中定义条件。
条件格式编程
当能够非常熟练的使用<条件格式>对话框创建条件格式后,在这个时期,可能想使用 VBA 代码了。通过使用代码创建条件格式,能管理条件格式,用户就会发现可以超过允许的三个条件格式。也可能想在多个应用程序或多个窗体中使用条件格式。在代码中产生条件,非常易于在不同的窗体中使用复制粘贴代码应用同样的格式。
窗体上的每个组合框和文本框有一个包含
来看看另一个定置窗体及在其背后的代码,是如何通过编程来创建条件格式及如何提供附加格式选择。图 4 显示一个文本框中根据靶号确定格式的窗体。
在这个窗体中,用户在 Target 文本框中键入数字,并在 Choose an option 区域选择一选项(Option)。用户然后在 Result 文本框中键入数字并点击[Change]按钮。对于前面三选项,Result 文本框的值与 Target 文本框的值进行比较,并根据两个值是否是少于、等于、或大于另一个,格式化 Result 文本框的值。对于第四个选项,当点击[Change]按钮后,则按当前日期的星期与字符串 Sat 和 Sun 进行比较来确定 Result 文本框如何格式化。
下面是 Change 命令按钮的 Click 事件处理程序:
Private Sub cmdChange_Click() ' 这个子程序演示使用 FormatCondition 对象来添加一个文本框的格式。 ' 设置背景色和前景色 ' 移除任何已存在的条件格式 ' 创建三个格式对象并将它们添加到 FormatConditions 集合中 ' 根据用户的选项选择,格式化 txtResult 文本框 Case 1 With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) Case 2 With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) Case 3 Me.txtResult.FormatConditions(0).Enabled = False Case 4 ' 这里,重新基于一比较今天日期字符串值的表达式定义格式 Set objFrc = Me.txtResult.FormatConditions. _ With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) End Select End Sub |
讲述代码的细节
首先,我们定义一个 FormatCondition 对象变量 objFrc。对象将包含我们所需的格式条件。下一步,我们设置要用在 Results 文本框进行格式化的颜色。
' 设置背景色和前景色 lngRed = RGB(255, 0, 0) lngWhite = RGB(255, 255, 255) lngBlack = RGB(0, 0, 0) lngYellow = RGB(255, 255, 0) |
然后使用 FormatConditions 集合的 Delete 方法移除任何已存在的 FormatCondition 对象。
Me.txtResult.FormatConditions.Delete |
确保将要创建三个 FormatCondition 对象的空间,这是必须的。通过引用其索引值删除 FormatCondition 对象如下:
Me.txtResult.FormatConditions(1).Delete |
接下来,定义指定的格式条件并使用 Add 方法将它们加入到 FormatConditions 集合。
Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acLessThan, Me.txtTarget.value) Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acEqual, Me.txtTarget.value) Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acGreaterThan, Me.txtTarget.value) |
表达式及控件确定何时应用格式以及应用哪个控件上。例如:如果 txtResult 控件字段值少于 txtTarget 控件字段值等等条件,在 txtResult 控件上应用格式。
然后,使用 Select Case 语句序号来确定那个条件应用那个格式。这是通过 Choose an option 区域(optgrpChoice 控件)的选项值来决定的。例如用户选择了选项 1 (option 1) 并且 Result 文本框的值大于 Target 文本框的值,则以下代码将会执行:
With Me.txtResult.FormatConditions(2) .FontBold = True .FontItalic = True .FontUnderline = False End With |
这里,第三个格式条件(索引值从 0 开始)将加粗和斜格式应用到 Result 文本框。使用 Select Case 语句举例说明不同的格式组合。
当用户选择选项 4 (Option 4) 这个特殊情形时,将移除集合中已存在的 FormatCondition 对象并动态创建新的 FormatCondition 对象。
Me.txtResult.FormatConditions.Delete Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") = "Sat")) Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") <> "Sat") And _ (Format(Now(), "ddd") <> "Sun")) Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") = "Sun")) |
在这些条件定义中,使用了表达式事产生用三个字母表示的今天日期的星期值,并与字符串 Sat 和 Sun 进行比较来确定今天是平日还周末。使用 access 的 Format 函数可将今天的日期转化为三个字母的字符串。是通过比较字符串不等于 Sat 或 Sun 来确定今天是否是平日。
结论
在本文中,我们探讨了 Access 中的控件条件格式。我们通过用户接口、定义和创建可编程条件格式来察看应用条件格式的规则。尽管任何时候 access 限制每个控件不超过三个条件格式,但是可以通过使用 Select Case 语句和动态改变格式条件来提供附加的功能。对该技术进行举一返三,将产生更富有弹性的条件格式.
(责任编辑:admin)
- ·Access窗体居中显示技巧
- ·Access中Tab键的使用说明【技巧】
- ·Access粘贴对象到Tab选卡上的技巧
- ·Access在窗体上显示当前记录和总记录数
- ·Access隐藏组合框的小箭头
- ·Access窗体属性表
- ·【技巧】Access选项组边框变为圆角边框
- ·Access函数me.sfmsub.form 提示子窗体
- ·Access中使用缩放对话框显示文本框文字
- ·access技巧-中文显示星期几的简单方法
- ·Access控件是否可见,可编辑,锁定的技巧
- ·根据查找窗体设定的条件筛选主窗体的数
- ·父子窗体的语法介绍
- ·access实现组合框联动详细教程
- ·Web Service在Access中的应用技巧
- ·Access窗体最大化,最小化等操作