访问 - 无法格式化单个报表字段,整个列颜色更改

时间:2016-09-01 05:28:59

标签: vba ms-access-2013

我有一个简单的报告,其中包含基于查询的记录和图表。我的图表中没有传说的空间,因此我尝试在报告的详细信息部分中为某个字段着色,以匹配图表中该记录的颜色。我可以像使用VBA一样为图表着色,但是如果不对整列进行着色,我无法单独为字段值着色。

我试过了:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If Me![Field1].Value = 32 Then
       Me![Field1].ForeColor = vbRed
    End If 
End Sub

正确检测到该值,但如果存在“SomeValue”,整个​​Me![MyFieldName]的列将变为红色。

Entire column's color changes

这个问题让我疯了好几天了,我即将放弃。我能够使用VBA为每个目标值编写条件格式来实现我的目标,但Access最多4个条件格式(如果包含默认值)将该解决方案计算出来。

我考虑过使用隐藏文本框存储每条记录的RGB值,但是我无法获得条件格式来从另一个字段获取目标颜色,只是用于确定是否需要应用颜色的值。 / p>

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

Detail_Format is the correct event to use. But you need an Else case in your code, to reset the format for all other values.

Dim lColor As Long

If Me![Field1].Value = 32 Then
    lColor = vbRed
' ElseIf Me![Field1].Value = 77 Then   ' etc
'     lColor = vbBlue
Else                                   ' default color
    lColor = vbBlack
End If

Me![Field1].ForeColor = lColor