【问题标题】:VBA Fill cell color based on value of another cellVBA根据另一个单元格的值填充单元格颜色
【发布时间】:2016-07-18 20:50:28
【问题描述】:

使用: Excel 2010

目标:我想说“如果 D14 等于 A,则用这个 RGB 填充这个范围;否则,如果 D14 等于 B,那么用这个 RGB 填充这个范围”。如果重要,此脚本位于 Private Sub 中。

问题:我返回此错误:“运行时错误'1004':应用程序定义或对象定义错误”。奇怪的是,它确实有效并改变了范围的填充颜色,但在正确执行此操作后 仍然出错。

我尝试过的:这是我到目前为止一直在玩的代码,但不知道如何解决

With ThisWorkbook.Sheets("Dashboard").Range("A1:I1")
    If ThisWorkbook.Sheets("Dashboard").Range("D14").Value = "A" Then
        .Interior.Color = RGB(0, 180, 210)
    ElseIf ThisWorkbook.Sheets("Dashboard").Range("D14").Value = "B" Then
        .Interior.Color = RGB(51, 57, 64) 'The debugger says the issue is on this line
    End If
End With

【问题讨论】:

  • 条件格式不是更容易吗?
  • @Comintern 你是对的,但我也在改变同一个工作表上形状的颜色,这必须通过 VBA 完成(据我所知),所以我想保留这一切都在 VBA 脚本中。对于形状,脚本工作得很好。但无法使其适合该范围。
  • 您的代码在我运行时运行良好(Excel 2007)。有深灰色和浅蓝色。实际代码中会不会有错字?
  • 我很好奇你是不是这样写的。如果您尝试With ThisWorkbook.Sheets("Dashboard") | Select Case .Range("D14").Value | Case is "A" : .Range("A1:I1").Interior.Color = RGB(0, 180, 210) ... 等会怎样?

标签: vba excel


【解决方案1】:
If ThisWorkbook.Sheets("Dashboard").Range("D14").Value = "A" Then

这一行是你定义的范围

    .Interior.Color = RGB(0, 180, 210)

这一行你没有

ThisWorkbook.Sheets("Dashboard").Range("D14").Interior.Color = RGB(0, 180, 210)

【讨论】:

  • EDIT 只评论语法
猜你喜欢
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 2017-06-05
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多