访问条件格式以获取单个记录上的连续表单

时间:2012-12-18 16:38:15

标签: vba ms-access

我有一个连续的表格,列出了采集样本的时间以及这些样本中不同化学物质的水平。我想格式化细胞以显示化学物质水平何时超出范围。我的问题是,它们会在每个采样时间内发生变化。 .3对于10小时的样品来说太高了,但是30小时都没问题。下面是我的连续形式的示例。

Sample Time      Lactics      Sugar
10 hour           .085        15.2
20 hour           .125        12.8
30 hour           .345        8.4
40 hour           .405        4.2
50 hour           .415        1.9

所以我想说“如果Lactics> .2在20小时,然后让细胞变红”等等,每个时间段和我正在跟踪的每个组件。如何使用VBA进行设置?

2 个答案:

答案 0 :(得分:4)

创建一个表来保存“超出范围”规则。

Sample Time Lactics_limit
10 hour                .3
20 hour               .35
30 hour                .4
40 hour               .45
50 hour                 ?

然后将表单基于一个查询,该查询将原始表连接到value_limits表,并带有一个计算字段lactics_flag,该字段指示值何时超出范围。并将条件格式设置为lactics_flag

SELECT
    y.[Sample Time],
    y.Lactics,
    y.Sugar,
    IIf(y.Lactics > v.Lactics_limit, True, False) AS lactics_flag
FROM
    YourTable AS y
    INNER JOIN value_limits AS v
    ON y.[Sample Time] = v.[Sample Time];

将该方法的简单性与您需要表达相同规则的Expression Is列表的复杂性进行比较:

([Sample Time]="10 hour" And [Lactics]>0.3) Or ([Sample Time]="20 hour" And [Lactics]>0.35) Or ([Sample Time]="30 hour" And [Lactics]>0.4) Or ([Sample Time]="40 hour" And [Lactics]>0.45) Or ([Sample Time]="50 hour" And [Lactics]>?)

这种方法的另一个优点是,当它们存储在表中而不是作为表单中的条件格式表达式时,更容易维护规则。这些规则可以很容易地重复用于其他表格或报告。

如果您没有每个[Sample Time]的规则,则可以将它们排除在value_limits表之外,并在查询中使用LEFT JOIN

答案 1 :(得分:2)

您可以将Expression Is与值列表一起使用:

 ([sample]=10 And [Lactics]>=0.2) Or ([sample]=20 And [Lactics]>=0.35)

Conditional