首页 > 解决方案 > VBA - 宏记录器更改单元格颜色未按预期工作

问题描述

我使用宏记录器将单元格中文本的某些部分更改为与“隐藏”该部分的背景颜色相同的颜色。例如,对于“Text Here 1”,“1”将更改为与背景相同的颜色,因此用户只能出于视觉目的看到“Text Here”。但是,重用此宏会产生意想不到的颜色。单元格背景颜色为 RGB (226, 239, 218)

宏运行前:

在此处输入图像描述

预期结果:

在此处输入图像描述

意外结果:

在此处输入图像描述

Sub Macro1()

    Range("D6").Select
    ActiveCell.FormulaR1C1 = "Text Here 1"
    With ActiveCell.Characters(start:=1, Length:=10).Font
        .Name = "Calibri"
        .FontStyle = "Bold"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    
    With ActiveCell.Characters(start:=11, Length:=1).Font
        .Name = "Calibri"
        .FontStyle = "Bold"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.799981688894314
        .ThemeFont = xlThemeFontMinor
    End With
End Sub

从宏记录器中删除的编辑代码:

Sub Macro2()
Set ws = ThisWorkbook.Worksheets("Sheet1")
    With ws.Cells(6, 4).Characters(start:=11, Length:=1).Font
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.799981688894314
        .ThemeFont = xlThemeFontMinor
    End With
End Sub

标签: excelvba

解决方案


不知道为什么会这样,但你总是可以摆脱那些已经录制但并不真正需要的东西。

With Range("D6")
    .Characters(Start:=11, Length:=1).Font.Color = .Interior.Color
End With

推荐阅读