嗨,我有一个 ms 访问报告。我想编写 vba 代码以仅为前三条记录提供不同的颜色

HI there, I have an ms access report. I want to write vba code to give a different color to only the first three records

提问人:paulusg62 提问时间:11/1/2023 更新时间:11/2/2023 访问量:51

问:

我有一个显示多条记录的 ms 访问报告。 我想以不同的背景颜色显示前三条记录,我想编写 vba-code 来实现这一点。有谁知道如何做到这一点? 任何帮助将不胜感激,谢谢。

我尝试在细节事件中编码,但随后整个部分以另一种颜色显示。

MS-Access 报告 VBA7

评论

0赞 Community 11/1/2023
请编辑问题,将其限制为具有足够详细信息的特定问题,以确定适当的答案。

答:

1赞 Shahram Alemzadeh 11/2/2023 #1

这在打印预览中有效:

SUB DETAIL_FORMAT
    IF (condition) THEN
        DETAIL.BACKCOLOR = ...
    ELSE
        DETAIL.BACKCOLOR = ...
    END IF
END SUB

这适用于报告视图:

SUB DETAIL_PAINT
    IF (condition) THEN
        DETAIL.BACKCOLOR = ...
    ELSE
        DETAIL.BACKCOLOR = ...
    END IF
END SUB

评论

0赞 paulusg62 11/6/2023
嗨,确实,这有效。我花了一段时间才弄清楚为什么格式事件没有做任何事情,现在我意识到它应该是绘画事件。谢谢你的帮助。
0赞 June7 11/7/2023
应该在“详细信息”部分“格式”、“打印”或“绘制”中工作。
1赞 June7 11/2/2023 #2

试试这个:

将名为 tbxCnt 的文本框放在“详细信息”部分,其中 ControlSource 为 =1,并将 RunningSum 设置为“OverAll”(可以设置为不可见)。代码选项:

  1. 每个文本框的条件格式规则Expression is: [tbxCnt]<4

  2. VBA 可以测试 tbxCnt 的值,以使用以下命令设置详细信息部分的背景颜色:

    If Me.tbxCnt < 4 Then Me.Detail.Backcolor = vbYellow Else: Me.Detail.Backcolor = vbWhite
    Me.Detail.Backcolor = IIf(Me.tbxCnt < 4, vbYellow, vbWhite)

确保为 NoColor 设置了 AlternateBackColor。

评论

0赞 paulusg62 11/6/2023
嗨,这很好用,谢谢!
0赞 June7 11/7/2023
如果答案解决了问题,请标记为已接受。