【问题标题】:Set cell format based on variable根据变量设置单元格格式
【发布时间】:2015-12-07 02:27:04
【问题描述】:

我对 VBA 很陌生,所以我认为这应该是一个简单的答案,如果这种事情已经被问过或者非常明显,我们深表歉意!

我正在尝试根据另一个单元格中提供的值设置单元格的阴影(特别是设置黑色或灰色的颜色和阴影)。我在“.ThemeColor = thmclr”行上不断收到错误消息。我想我刚刚输入了“thmclr”位错误。在“Othersheet”的单元格 I3 和 I4 中,黑色和灰色的正确颜色代码(取决于它是哪一个)。有没有人能够澄清我应该如何做到这一点?谢谢!

Set thmclr = Worksheets("Othersheet").Range("I3")
Set tntshde = Worksheets("Othersheet").Range("I4")

With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = thmclr
    .TintAndShade = tntshde
    .PatternTintAndShade = 0
End With

【问题讨论】:

  • 你考虑过条件格式吗?
  • 创建单元格后,用户会将其复制/粘贴到他们选择的单元格中。所以使用条件格式会更复杂。肯定有一个超级简单的答案吗?我设法使用这种方法创建了一个自定义范围,所以肯定是类似的东西 --> Set rnglkp = Worksheets("Othersheet").Range("I1") 然后 --> Range(rnglkp).Select

标签: excel vba format


【解决方案1】:

确保您从单元格中获取的值对应于有效的ThemeColors:

xlThemeColorAccent1              5
xlThemeColorAccent2              6
xlThemeColorAccent3              7
xlThemeColorAccent4              8
xlThemeColorAccent5              9
xlThemeColorAccent6             10
xlThemeColorDark1                1
xlThemeColorDark2                3
xlThemeColorFollowedHyperlink   12
xlThemeColorHyperlink           11
xlThemeColorLight1               2
xlThemeColorLight2               4

TintAndShade

也一样

编辑#1:

例如,如果我们从:

并运行此代码:

Sub cosmo()
Set thmclr = Worksheets("Othersheet").Range("I3")
Set tntshde = Worksheets("Othersheet").Range("I4")

With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = thmclr.Value
    .TintAndShade = tntshde.Value
    .PatternTintAndShade = 0
End With
End Sub

我们得到:

请注意,两个控制单元格包含 NUMERIC 值。

【讨论】:

  • 我通过录制一个将颜色设置为黑色的宏和另一个将颜色设置为灰色的宏来查找它们。每个选项的唯一两个选项是 - 主题颜色:“xlThemeColorLight1”(黑色)或“xlThemeColorDark1”(灰色)和 tintandshade:“0”(黑色)和“-0.499984741”(灰色)。
  • @cosmo 查看我的EDIT#1
  • 感谢您的编辑。虽然我已经完全按照描述运行它,但我得到“运行时错误'13':类型不匹配',错误就在 .ThemeColor = thmclr.Value - 有什么想法吗?
  • @cosmo 不确定.......确保单元格包含数字 5 而不是看起来像 5
  • 好吧,单元格中的值是“5”,如果这就是你的意思,单元格的格式是“数字”。单元格是一个公式,所以我把它改成了数字 5,它仍然有同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多