VBA擅长如何选择指定单元格来更改背景颜色

时间:2017-11-06 07:31:49

标签: excel-vba if-statement colors vba excel

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

我有细胞(A到G)。

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

CODE:

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

1 个答案:

答案 0 :(得分:0)

我想你应该写:

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

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

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

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

按照您的编码样式,这就是排除列C

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