字体.色调与亮度无法改变文本的亮度。

5

我选择一个文本,改变它的颜色,它会告诉我这个。

Range("A7").Select
With Selection.Font
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = -1
End With

但是当我运行这段代码时,TintAndShade无法工作。使用vba不能设置单元格中文本的亮度。是否有更改文本亮度的其他方法?或者如何使TintAndShade正常工作?

3个回答

8
我相信您正在使用Excel 2010,并不幸的是,这是Excel 2010中的一个错误。不确定在Excel 2013中是否已经纠正。
以下是一个替代方案:创建一个新工作簿并将此代码粘贴到一个模块中。
逻辑: ".TintAndShade" 对单元格的 ".Interior" 进行处理,因此我们将使用它来处理单元格的字体,而非对 ".TintAndShade" 进行处理。
代码:
Sub Sample()
    Dim ws As Worksheet
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    With ws
        .Range("B1:B256").Value = "Blah Blah"
        
        For i = 1 To 256
            .Range("A" & i).Interior.ThemeColor = xlThemeColorAccent2
            .Range("A" & i).Interior.TintAndShade = (i * 2 - 256) / 256
            
            .Range("B" & i).Font.Color = .Range("A" & i).Interior.Color
        Next i
    End With
End Sub

屏幕截图:

当您运行此程序时,您将看到字体亮度的变化,如下面的屏幕截图所示。 :)

enter image description here

注意:

对于实时场景,请创建一个临时工作表,在任何单元格中设置.Interior.TintAndShade,然后使用它来设置相关单元格的字体亮度,完成后,只需删除临时工作表即可。


1

另一个解决方案是使用.color而不是.interior.TintSndShade。在Excel的主页选项卡和字体类别中找到所需的颜色和色调。然后记录一个宏,将单元格的字体颜色更改为所需的颜色。然后使用“更多颜色选项”并轻微地上下滑动较暗/较亮的条形。这将在您记录的Excel宏中给出.color属性。


1
好的回答。但如果您能够创建一个示例宏,使用一些示例单元格更改字体颜色,那将是一个很棒的回答。这个问题很旧,OP已经解决了他的问题;但是寻找类似问题的人可能会找到这个问题,并且在您的答案中提供一个小示例将有助于他。 - grochmal

0
我也找到了另一种解决方案,可能有点棘手... 我创建了一个具有所需字体颜色但没有文本的单元格,并将此单元格复制到需要该颜色的位置。
Dim texxt As String
texxt = Range(N_Range).Value
Range("R3").Copy  'this is my preset cell
Range(N_Range).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = texxt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接