vba excel如何检查单元格是否为空并着色整行?

vba excel如何检查单元格是否为空并着色整行?

问题描述:

我有VBA代码,用于比较用户输入的日期和当前日期,并用适当的颜色填充背景。它所有的工作正常。vba excel如何检查单元格是否为空并着色整行?

现在我需要做系统检查,如果在列中选择排F的细胞是不是空的我需要有色列d,E,F为灰色。

代码:

Private Sub CommandButton1_Click() 

    Dim i As Integer 

    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 
      Cells(i, 3).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 

    Next 

End Sub 

我会感谢所有帮助

+0

使用条件格式 – Rosetta

+0

@Rosetta没有我需要将其添加在我的代码 –

+0

'如果细胞(I,6) “” 然后细胞(I,3).entirerow.interior.color = vbRed '......这能解决你的问题吗? – Rosetta

您也需要检查,如果在相关审核规定Trim(Range("F" & i).Value) <> ""

我也体改当前的代码的逻辑更短,更快地运行通过(切换到Select Case等)

代码

Private Sub CommandButton1_Click() 

Dim i As Long 
Dim NumofDays As Long 

For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment' 
    Cells(i, 3).Interior.Color = xlNone ' set as inital color, only change if all criterias are met 

    NumofDays = CDate(Cells(i, 3)) - Date 

    Select Case NumofDays 
     Case Is < 0 
      Cells(i, 3).Interior.Color = vbGreen 

     Case 0 
      Cells(i, 3).Interior.Color = vbYellow 

     Case 1 To 4 
      Cells(i, 3).Interior.Color = vbRed 

     Case 5 To 10 
      Cells(i, 3).Interior.Color = vbCyan 

    End Select 

    ' your 2nd criteria to color the entire row if "F" is not empty 
    If Trim(Range("F" & i).Value) <> "" Then Range("D" & i & ":F" & i).Interior.Color = ... ' selectyourcolor 
Next i 

End Sub 
+0

我不想让整行彩色绿色或红色...如果我想只填充列** D,E,F **灰色和其余的列留在我的代码中...我将编辑我的问题 –

+0

@ Dany7elo请参阅编辑的代码,替换我写了'...'的部分,选择你想要放在那里的颜色 –

+0

你的代码正在工作,但仍然有一个问题,即使单元格(i,3)为空,单元格的颜色为绿色。 ..我想要的是如果(我,3)是空的,不能着色 –

条件格式是最容易,只是a few clicks

  1. 从选择要更改的背景颜色的单元格开始。
  2. 单击主页选项卡上的条件格式>新规则...创建一个新的格式设置规则。
  3. 在主页选项卡上,单击条件格式>新规则...在打开的“新建格式规则”对话框中,选择选项“使用 公式确定要格式化的单元格”并输入以下公式 公式在“此公式为真的格式值”字段中: = $ C2> 4
  4. 打开“新建格式规则”对话框并输入所需的公式。而不是C2,你输入一个单元格,其中包含你想要的值 检查你的表格,并把你需要的数字,而不是4.和 自然,你可以使用较少(<)或相等(=)符号,以便您的 公式将分别读取= $ C2 < 4和= $ C2 = 4。
  5. 另外,请注意单元格地址之前的美元符号$,当公式 在整行上被复制时,需要使用它来保持列字母相同。实际上,它是根据给定单元格中的值对整个行应用格式的技巧和 。
  6. 单击“格式...”按钮并切换到填充选项卡以选择背景颜色。如果默认颜色不足,请单击 “更多颜色...”按钮选择您喜欢的颜色,然后单击确定两次。