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
我会感谢所有帮助
您也需要检查,如果在相关审核规定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
我不想让整行彩色绿色或红色...如果我想只填充列** D,E,F **灰色和其余的列留在我的代码中...我将编辑我的问题 –
@ Dany7elo请参阅编辑的代码,替换我写了'...'的部分,选择你想要放在那里的颜色 –
你的代码正在工作,但仍然有一个问题,即使单元格(i,3)为空,单元格的颜色为绿色。 ..我想要的是如果(我,3)是空的,不能着色 –
条件格式是最容易,只是a few clicks。
- 从选择要更改的背景颜色的单元格开始。
- 单击主页选项卡上的条件格式>新规则...创建一个新的格式设置规则。
- 在主页选项卡上,单击条件格式>新规则...在打开的“新建格式规则”对话框中,选择选项“使用 公式确定要格式化的单元格”并输入以下公式 公式在“此公式为真的格式值”字段中: = $ C2> 4
- 打开“新建格式规则”对话框并输入所需的公式。而不是C2,你输入一个单元格,其中包含你想要的值 检查你的表格,并把你需要的数字,而不是4.和 自然,你可以使用较少(<)或相等(=)符号,以便您的 公式将分别读取= $ C2 < 4和= $ C2 = 4。
- 另外,请注意单元格地址之前的美元符号$,当公式 在整行上被复制时,需要使用它来保持列字母相同。实际上,它是根据给定单元格中的值对整个行应用格式的技巧和 。
- 单击“格式...”按钮并切换到填充选项卡以选择背景颜色。如果默认颜色不足,请单击 “更多颜色...”按钮选择您喜欢的颜色,然后单击确定两次。
使用条件格式 – Rosetta
@Rosetta没有我需要将其添加在我的代码 –
'如果细胞(I,6) “” 然后细胞(I,3).entirerow.interior.color = vbRed '......这能解决你的问题吗? – Rosetta