excel - VBA根据数据透视表中的背景颜色更改字体颜色

标签 excel vba pivot pivot-table

我正在尝试编写一个 VBA 代码来根据该单元格的背景颜色更改该单元格的字体颜色。通常,在两列(“ID”和“名称”)中“隐藏”记录名称。使用条件格式对单元格进行着色。

enter image description here

我设法找到了一种仅使用一种颜色来更改字体的方法,但不知道如何动态获取单元格的背景颜色并将其用作字体颜色。
简单 .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 规则格式的一部分。这样做的好处是它是动态的,因此会随着数据而变化......

enter image description here

关于excel - VBA根据数据透视表中的背景颜色更改字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863387/

相关文章:

excel - 仅第一列在 CSV 生成中跳过逗号

vba - 条件格式,虽然应用但没有出现格式

vba - 将工作表从一个工作簿复制到另一个工作簿时出错

MySQL 将行输出单元格转换为列

java - 如何更改数据透视表中的默认标题背景颜色

Excel - 如果通过检查同一表中的其他列满足条件,则对列求和

excel - 根据条件选择数据,然后根据与特定条件匹配的行复制行

excel - 通过 VBA for Excel 中的用户输入乘以一系列单元格

excel - 无法按日期对数据透视表进行排序

laravel - 预加载三向数据透视表 Laravel