首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vba擅长如何检查单元格是否为空,并对整行进行着色?

vba擅长如何检查单元格是否为空,并对整行进行着色?
EN

Stack Overflow用户
提问于 2017-10-18 10:20:19
回答 2查看 5.8K关注 0票数 0

我有VBA代码,将用户输入的日期与当前日期进行比较,并以适当的颜色填充背景。一切都很好。

现在我需要使系统检查所选行的F列中的单元格是否为空,我需要将列D、E、F着色为灰色。

代码:

代码语言:javascript
复制
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

我会感谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-18 10:35:49

您还需要检查相关标准中是否存在Trim(Range("F" & i).Value) <> ""

我还修改了当前代码的逻辑,使其能够更短更快地运行(切换到Select Case等)。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2017-10-18 10:51:54

条件格式是最简单的,只有点击几下

  1. 从选择要更改其背景色的单元格开始。
  2. 通过单击“条件格式”>“新规则”创建新的格式规则.在家庭标签上。
  3. 在“主页”选项卡上,单击“条件格式”>“新规则”。在打开的“新建格式规则”对话框窗口中,选择“使用公式确定要格式化的单元格”,并在“此公式为真的格式值”字段中输入以下公式:=$C2>4
  4. 打开“新格式规则”对话框并输入所需的公式。代替C2,输入一个包含要在表中签入的值的单元格,并将所需的数字改为4。当然,您可以使用较少(<)或相等(=)号,以便您的公式分别读取=$C2<4和=$C2=4。
  5. 此外,请注意单元格地址之前的美元符号$,当公式被复制到行中时,您需要使用它来保持列字母不变。实际上,这就是根据给定单元格中的值对整个行应用格式设置的诀窍。
  6. 点击“格式……”按钮并切换到“填充”选项卡以选择背景色。如果默认颜色不够,请单击“更多的颜色.”按钮可选择您喜欢的按钮,然后单击“确定”两次。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46807896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档