【问题标题】:VBA excel how to select specify cells to change the background colorVBA excel如何选择指定单元格来改变背景颜色
【发布时间】:2018-04-18 07:34:54
【问题描述】:

我有一个用 VBA 编写的代码,它将检查日期并根据它用适当的颜色填充背景。

我有单元格(A 到 G)。

我想检查 G 是否为空,如果是,我想更改单元格 (A)(B)(D)(E)(F)(G) 的背景颜色,除了 CELL (C)。

代码:

Private Sub CommandButton1_Click()

Dim i As Long

For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'

    If IsEmpty(Cells(i, 3)) Then
         Range("A" & i & ":G" & i).Interior.Color = xlNone

       ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 0 Then
             Cells(i, 3).Interior.Color = vbGreen

       ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) = 0 Then
             Cells(i, 3).Interior.Color = vbYellow

       ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 1 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 4 Then
              Cells(i, 3).Interior.Color = vbRed

       ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 5 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 10 Then
               Cells(i, 3).Interior.Color = vbCyan

    Else
                Cells(i, 3).Interior.ColorIndex = xlNone

 End If

    ' your 2nd criteria to color the entire row if "F" is not empty
    If Trim(Range("G" & i).Value) <> "" Then
                       Range("A" & i & ":G" & i).Interior.ColorIndex = 15


  ElseIf Trim(Range("G" & i).Value) = "" Then
                       Range("A" & i & ":B" & i).Interior.Color = RGB(255, 189, 189)
                       Range("D" & i & ":G" & i).Interior.Color = RGB(255, 189, 189)

 End If

Next
End Sub

【问题讨论】:

    标签: excel if-statement colors vba


    【解决方案1】:

    我想你应该写:

    Trim(Range("G" & i).Value) = "" 
    

    代替Trim(Range("G" &amp; i).Value) == ""

    VBA 中不存在== 运算符,只有=

    其余的应该可以正常工作。为避免此类语法错误,请在模块顶部开始写Option Explicit。它会在你运行程序后立即告诉你错误在哪里。


    按照您的编码风格,这就是您排除列 C 的方式:

    Range("A" & i & ":B" & i).Interior.ColorIndex = 7
    Range("D" & i & ":F" & i).Interior.ColorIndex = 7
    

    【讨论】:

    • @Dany7elo - 在你写 15 的第二个地方将 15 更改为 1,现在这两个动作是相同的。
    • aslo 如果我更改它,它不会解决我的问题,并且会填充我想要排除列 c 的列
    • 我将在我的问题中编辑我的代码,因为现在它可以工作但不考虑第一个 if 语句
    • @Dany7elo - 在它采用第一个 if 语句之前?
    • 是的,它正在工作。现在它使所有空的行都被着色
    猜你喜欢
    • 2017-09-17
    • 2021-10-31
    • 2015-10-09
    • 2013-06-04
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多