如果A1不等于空白,则VBA颜色行1,依此类推

如果A1不等于空白,则VBA颜色行1,依此类推,vba,excel,colors,Vba,Excel,Colors,我正在尝试循环第1行,并根据单元格是否为空对其进行着色。例如,如果某物在A1中,则将其涂成浅灰色,如果某物在B1单元格中,则将其涂成相同颜色。非常感谢您的帮助。如果活动表A1中有文本,您可以使用类似的方式: Sub test() Dim c As Integer c = Application.WorksheetFunction.CountA(ActiveSheet.Range("A1")) If c > 0 Then ActiveSheet.Range("A1").Interio

我正在尝试循环第1行,并根据单元格是否为空对其进行着色。例如,如果某物在A1中,则将其涂成浅灰色,如果某物在B1单元格中,则将其涂成相同颜色。非常感谢您的帮助。

如果活动表A1中有文本,您可以使用类似的方式:

Sub test()
Dim c As Integer
c = Application.WorksheetFunction.CountA(ActiveSheet.Range("A1"))
If c > 0 Then
    ActiveSheet.Range("A1").Interior.ColorIndex = 15
End If
End Sub

如果表达式为true,这将使行变为绿色。将颜色指定为RGB

=ColorRowIF(A1=B1、1181、0)

或者在您的情况下,
在条件中为空

=ColorRowIF(ISBLANK(B2),1181,0)

公共函数ColorRowIF(条件为布尔值,r为整数,g为整数,b为整数)作为字符串
将行设置为整数
行=Application.Caller.row
如果条件=真,则
ActiveSheet.Evaluate“ColorRow(“&row&”、“&r&”、“&g&”、“&b&”)
其他的
'ws.Rows(r.Interior.Color=vbRed
如果结束
ColorRowIF=条件
端函数
公共子颜色行(行为整数,r为整数,g为整数,b为整数)
将ws设置为工作表
设置ws=ActiveSheet
ws.Rows(row.Interior.Color=RGB(r,g,b)
端接头
函数IsDate(CellDate为日期)为布尔值

如果CellDate>=1且CellDate为什么不使用条件格式-无需代码同意@tompreston。但如果您需要VBA,请尝试。顺便说一句,这个链接是谷歌搜索“基于值的excel vba颜色行”时的第一个结果。它是一个已经编写了宏的项目的一部分,如果我也能将它添加进去,这样它就可以无缝工作了。我只是不知道怎么做。任何帮助都将不胜感激。@CMArg是的,我看到了,但无法让它发挥作用。谢谢你的帮助。非常感谢。由于这一点,工程伟大,但它只颜色A1,我希望它会颜色A1,B1等,如果细胞是不平等的空白。有什么想法吗?你可以对B1做同样的测试,用B1代替A1
Public Function ColorRowIF(Condition As Boolean, r As Integer, g As Integer, b As Integer) As String
    Dim row As Integer
    row = Application.Caller.row

    If Condition = True Then
        ActiveSheet.Evaluate "ColorRow(" & row & ", " & r & ", " & g & ", " & b & ")"
    Else
        'ws.Rows(r).Interior.Color = vbRed
    End If

    ColorRowIF = Condition
End Function


Public Sub ColorRow(row As Integer, r As Integer, g As Integer, b As Integer)

    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Rows(row).Interior.Color = RGB(r, g, b)

End Sub


Function IsDate(CellDate As Date) As Boolean
    If CellDate >= 1 And CellDate <= #12/31/2199# Then
    ' 1 is equal to January 1, 1900
        IsDate = True
    Else
        IsDate = False
        End If
End Function