我想宣传文本框报表控件的值,并根据其值隐藏或显示它,我可以使用VBA轻松实现:
If Me.Fixed.Value = 0 Then
Me.Fixed.Visible = False
End If
工作正常,但我用作报告记录源的查询允许一次打印一系列记录(每页/报告1个),我希望上面的代码针对每个页面/报告运行。我不确定将代码放在何处,以便每条记录都按规则播放。目前,如果我选择8个记录的范围,只有第一个记录可以满足我的需要,当我浏览打印预览屏幕中的其他记录时,报告的格式在应该更改时保持不变。
我尝试过以下事件:
报告:
部分:的
在哪里可以放置我的VBA,以便每次滚动/导航该报告上返回的记录范围时,我的代码都会运行?
答案 0 :(得分:4)
您还需要将Visible
属性设置为True,否则它将保持不可见。
我正在使用Details部分的Format事件:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Me.Fixed = 0 Then
Me.Fixed.Visible = False
Else
Me.Fixed.Visible = True
End If
End Sub
这适用于打印预览,但不适用于报表视图。可能有一种方法可以使用报表视图,但我从不使用此视图。
声明可以简化:
Me.Fixed.Visible = Not (Me.Fixed = 0)
答案 1 :(得分:1)
请注意Visible
事件中没有Detail_Paint()
属性,这是您需要用于在报告视图中应用条件格式的事件。 (如果您尝试做一些花哨的事情,例如模拟超链接以进行深入挖掘效果,则可能需要这样做。)
解决方法是将文本框的ForeColor
设置为等于BackColor
。虽然文本在技术上仍然存在,但它不会在显示的报告上“显示”,从而模拟隐藏的字段。
Private Sub Detail_Paint()
' Check for even numbers
If (txtID Mod 2 = 0) Then
txtID.ForeColor = vbBlack
Else
' Set to back color to simulate hidden or transparent.
' (Assuming we are using a Normal BackStyle)
txtID.ForeColor = txtID.BackColor
End If
End Sub
示例输出: