我正在尝试编写VBA代码以根据该单元格的背景色来更改该单元格的字体颜色。通常,要“隐藏”两列(“ ID”和“ Name”)中的记录名称。单元格使用条件格式进行着色。
我设法找到一种仅使用一种颜色来更改字体的方法,但不知道如何动态获取单元格的背景色并将其用作字体颜色。
简单的.Font.Color = .Interior.ColorIndex
不起作用...
Sub Color_text_black()
Dim c As Range
With ActiveSheet.PivotTables("PivotTable2")
With Intersect(.PivotFields("Name").DataRange.Cells, .TableRange1)
.Font.Bold = False
.Font.Color = 1 '.Font.Color = .Interior.ColorIndex doesn't work
End With
End With
End Sub
也许还应该有另一种获取背景颜色的方法,我尝试使用For循环,但是它总是向我发送错误。
Sub Color_text()
Dim c As Range
With ActiveSheet.PivotTables("PivotTable1")
For Each c In .PivotFields("Name").DataRange.Cells
.Font.Bold = False
.Font.Color = .Interior.ColorIndex
Next
End With
End Sub
谢谢您的帮助!
答案 0 :(得分:1)
请注意,还有另一种隐藏文本的方法-通过设置自定义数字格式
https://support.office.com/en-us/article/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68
隐藏文字:
Sub HideInfo()
With ActiveSheet.PivotTables("PivotTable1")
HideText .PivotFields("Name").DataRange
HideText .PivotFields("ID").DataRange
End With
End Sub
取消隐藏文本:
Sub ShowInfo
With ActiveSheet.PivotTables("PivotTable1")
HideText .PivotFields("Name").DataRange, False '<<edited
HideText .PivotFields("ID").DataRange, False '<<edited
End With
End Sub
实用程序子,用于切换单元格格式以隐藏/取消隐藏内容:
Sub HideText(rng as Range, Optional bHide As Boolean = True)
rng.NumberFormat = IIf(bHide, ";;;""""", "General")
End Sub
请注意,如果只需要隐藏某些值,则可以将格式用作CF规则格式的一部分。这样做的好处是它是动态的,因此会随数据而变化...