【问题标题】:Conditional Formatting in Access with function in VBAAccess中的条件格式与VBA中的函数
【发布时间】:2019-09-24 17:40:09
【问题描述】:

我一般熟悉编程,但不熟悉 Access 表单或 VBA。

我可以使用条件格式。现在我需要让它响应自定义 VBA 函数的结果。
假设根据客户,某事可以发生多少次。
标签将显示计数“Trip 3 of 5”。
当我们达到 5 个中的 5 个时,它应该是黄色的,而 5 个中的 6 个应该是红色的。
请注意,我希望条件格式规则位于 Access 中,而不是 VBA 中。 VBA 只是返回我们在条件中测试的值。

我看不到如何在条件格式表达式中使用 VBA 函数的结果,但您似乎可以使用变量。

我试过了

TripCountValid: GetTripCountValid(ID)

然后在我的情况下使用了 TripCountValid,但这似乎不起作用。

GetTripCountMsg 和 GetTripCountValid 位于 Orders 模块中,因为这是我正在模拟的 GetBillAcctMsg 所在的位置。 我可以将它移到表单的代码隐藏中。

GetTripCountMsg 中的我的 MsgBox 被调用,但 GetTripCountValid 中没有调用。

【问题讨论】:

  • 为什么不使用文本框来显示计数?让 ConditionalFormatting 引用该文本框。您显示的内容看起来像查询中的计算字段。 TripCountValid 到底是什么以及在哪里?
  • ID 字段通常不会被编辑,因此不会触发 AfterUpdate。
  • @June7 计数消息在文本框中,由格式引用。
  • TripCountValid 在一个模块中,但如果有帮助,也可以在表单的代码中。
  • 非常简单。假设您的函数返回一个布尔值(真/假),CF 规则如 Expression Is: GetTripCountValid([ID])

标签: vba ms-access conditional-formatting


【解决方案1】:

可以在条件格式中引用函数。使用Expression Is: 选项。假设你的函数返回一个布尔值(真/假),CF 规则就是:

表达式为:GetTripCountValid([ID])

设置在函数返回 True 时显示的所需格式。或者,如果您希望更改 False 的显示:

表达式为:NOT GetTripCountValid([ID])

如果这些表达式不够明确,请使用您喜欢的布尔值使用 = 符号。

表达式为:GetTripCountValid([ID]) = True

如果函数返回的不是布尔值,则使用最后一种语法与适合情况的任何参数进行比较。关键是,表达式的计算结果必须为 True 或 False。

【讨论】:

  • 我让它作为 GetTripCountValid() 工作,但不是作为 GetTripCountValid([ID])。反正我不应该做两次计算,所以我把它标记为有效答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多