我想回避textbox报表控件的值,并根据它的值隐藏或显示它,我可以通过VBA轻松地实现它:
If Me.Fixed.Value = 0 Then
Me.Fixed.Visible = False
End If这很好,但我使用的查询作为报表的记录源,允许一次性打印一系列记录(每页1条/报表),我希望对每个页面/报表运行上述代码。我不知道该把代码放在哪里,这样每一张唱片都会按照规则播放。目前,如果我选择了8条记录的范围,只有第一条记录能做我想做的事情,而且当我在打印预览屏幕中浏览其他记录时,报告的格式将保持不变。
我尝试过以下事件:
报告:
部分:
我可以把我的VBA放在哪里,这样每次我滚动/浏览在该报告上返回的记录范围时,我的代码就会运行?
发布于 2013-07-17 17:50:58
您还需要将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这在打印预览中有效,但在报表视图中不起作用。也许有一种方法可以让它与Report一起工作,但是我从来没有使用过这个视图。
这句话可以简化:
Me.Fixed.Visible = Not (Me.Fixed = 0)发布于 2016-02-26 16:51:16
请注意,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示例输出:

https://stackoverflow.com/questions/17704530
复制相似问题