我正在尝试编写一个 VBA 代码来根据该单元格的背景颜色更改该单元格的字体颜色。通常,在两列(“ID”和“名称”)中“隐藏”记录名称。使用条件格式对单元格进行着色。
我设法找到了一种仅使用一种颜色来更改字体的方法,但不知道如何动态获取单元格的背景颜色并将其用作字体颜色。
简单 .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
感谢您的任何帮助!
最佳答案
请注意,还有另一种隐藏文本的方法 - 通过设置自定义数字格式
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 规则格式的一部分。这样做的好处是它是动态的,因此会随着数据而变化......
关于excel - VBA根据数据透视表中的背景颜色更改字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863387/