【问题标题】:changing font and color size based on cell values根据单元格值更改字体和颜色大小
【发布时间】:2020-11-09 21:12:19
【问题描述】:

这与我在使用这个问题的搜索中发现的非常不同。

我希望能够根据某个范围的单元格值更改字体大小和颜色 (RGB)。这将允许用户自定义表单(标题的大小和颜色、一般文本等)

对于字体大小,下面的这个可以完美地工作,但它不适用于字体颜色,除非我在代码中指定颜色。

单元格 B1 包含字体大小,12,单元格 B2 包含 255, 255, 0

Sub fontsizecolor ()

Dim rgb2 As String
rgb2 = ThisWorkbook.Worksheets("sheet1").Range("B2").Text

With Worksheets("Sheet1").Range("A1:A10")
 .Font.Size = Range("B1")
        '.Font.Color = RGB(255, 255, 0)  **<---- this works**
 
 .Font.Color = RGB(rgb2)
 
 
End With

End Sub

【问题讨论】:

  • RGB 需要 3 个数字参数。您正在传递一个字符串。您需要将字符串解析为 3 个参数,可能使用 Split,或者将 3 个数值放在 3 个不同的单元格中。

标签: excel vba


【解决方案1】:

正如 BigBen 提到的,您需要向 RGB 提供 3 个参数,而 Split 函数可以为您实现。

在下面的示例中,我们从 B2 中获取文本,将其拆分并将元素存储到一个数组中。然后我们只需将这些元素输入RGB

Sub fontsizecolor()

    Dim rgb2, rgbArray() As String
    
    rgb2 = ThisWorkbook.Worksheets("sheet1").Range("B2").Text
    rgbArray = Split(rgb2, ",") ' split string on ","
    
    With Worksheets("Sheet1").Range("A1:A10")
        .Font.Size = Range("B1")
        .Font.Color = RGB(rgbArray(0), rgbArray(1), rgbArray(2)) ' feed array elements as arguments
    End With

End Sub

【讨论】:

  • 我还想指出,您可以跳过将Split 的结果存储到数组中,而直接在RGB 中使用Split,如下所示:.Font.Color = RGB(Split(rgb2, ",")(0), Split(rgb2, ",")(1), Split(rgb2, ",")(2))。我觉得这看起来有点乱,但可能只是我 - 两种方法都有效
  • 感谢您的反馈。完美运行。谢谢 BigBen 和 adb。我疯了,试图为此找到一个在线解决方案。每个在线搜索都只会根据单元格值为单元格本身提供有关更改颜色等的解决方案。 (例如,如果值 > 10 转蓝等)
  • 乐于帮助@Leonard
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 2020-12-02
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多