【问题标题】:VBA script to set background color if cell is not empty如果单元格不为空,则 VBA 脚本设置背景颜色
【发布时间】:2018-07-10 10:29:19
【问题描述】:

刚开始在 Excel 2016 中使用 VBA..
我正在尝试找出一个脚本来为非空单元格提供背景颜色 这是我得到的:

If Range("a3:g8").Value = "" Then
  Interior.Color = RGB(222, 244, 180)
End If

但它不起作用。我做错了什么?

【问题讨论】:

  • 您是否考虑过只使用条件格式 - 无需编码。
  • 您的目标是空白单元格,而不是“非空单元格”。
  • @Dragonthoughts 它是更大宏的一部分,这是最后一个不起作用的部分。

标签: excel vba


【解决方案1】:

您可以将单元格定义为单个变量并循环遍历。见下面代码

Dim rng As Range, cell As Range
Set rng = Range("a3:g8")

For Each cell In rng
    If cell.Value = "" Then
        cell.Interior.Color = RGB(222, 244, 180)

    End If
Next

【讨论】:

    【解决方案2】:

    以空白单元格为目标,

    With Range("a3:g8")
        .FormatConditions.Delete
        with .FormatConditions.Add(Type:=xlExpression, Formula1:="=A3=TEXT(,)")
            .Interior.Color = RGB(222, 244, 180)
        end with
    End With
    

    以非空单元格为目标,

    With Range("a3:g8")
        .FormatConditions.Delete
        with .FormatConditions.Add(Type:=xlExpression, Formula1:="=A3<>=TEXT(,)")
            .Interior.Color = RGB(222, 244, 180)
        end with
    End With
    

    【讨论】:

      【解决方案3】:

      您要做的是将整个范围的值与“”进行比较,这将引发类型不匹配错误。您必须逐个检查每个单元格的值,或尝试使用以下使用简单 excel 公式的代码:

       If WorksheetFunction.CountA(Range("A3:G8")) = 0 Then
             Range("A3:G8").Interior.Color = RGB(222, 244, 180)
       Else
             MsgBox "Range has some value"
       End If
      

      【讨论】:

        猜你喜欢
        • 2010-11-21
        • 1970-01-01
        • 2021-10-31
        • 2013-08-23
        • 2017-12-08
        • 2019-07-27
        • 1970-01-01
        • 2012-06-06
        • 2019-10-21
        相关资源
        最近更新 更多