首页 > 解决方案 > 更改图表形状文本框的颜色(Excel VBA)

问题描述

无法弄清楚如何输入 a.Font.ColorIndex并使用它来更改图表文本框形状的字体颜色。

.Font.ColorIndex返回 48

当我更改宏中文本的颜色时,它会返回:

        With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1 ' How to set this value from a font color? Can you?
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.5
            .Transparency = 0
            .Solid
        End With

这可能吗?

标签: excelvba

解决方案


您正在混合不同的颜色类型。ObjectThemeColor 代表与 48 不同的颜色类型。

查看Microsoft 网站可用的选项有:

颜色类型

您可能希望将 ColorIndex 转换为 RGB,然后插入。您将需要一个自定义函数,但并不难。只需将此函数粘贴到您的代码模块中的某个位置。

Function getRGB(C As Long, LetterTYPE As String) As Integer
        Dim R As Long
        Dim G As Long
        Dim B As Long

        R = C Mod 256
        G = C \ 256 Mod 256
        B = C \ 65536 Mod 256

        If UCase(LetterTYPE) = "R" Then
           getRGB = R
        ElseIf UCase(LetterTYPE) = "G" Then
            getRGB = G
        ElseIf UCase(LetterTYPE) = "B" Then
            getRGB = B
        End If
End Function

然后重写您的原始代码以包含新创建的公式:

YourColor = 48
  With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(getRGB(YourColor , "R"), getRGB(YourColor , "G"), getRGB(YourColor , "B"))
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.5
            .Transparency = 0
            .Solid
        End With

推荐阅读