Excel VBA宏比较整列中的值

时间:2013-08-19 21:06:50

标签: excel vba

我是宏的新手,我正在努力学习如何编写一些简单的表达式。我想比较一列中的所有值,看它们是否与当月的当天匹配。

例如:列H包含对应于该月的随机日期的数字。我想知道如何在宏中编写表达式,以便今天== H列中的值(换句话说,如果今天是19,H列中的值是19)则更改单元格文本颜色红色(或其他一些动作)。

到目前为止,我只知道如何使用以下方法选择一系列单元格:Range(“B2,C7,I8”)但我不知道如何选择整个列。谁能告诉我怎么写这样的表达?

*注意:我不是在谈论跨表格比较列。我只需要将一列中的值与当前日期进行比较。谢谢!

1 个答案:

答案 0 :(得分:1)

要对整个列执行操作,这些行中的任何一行都将起作用:

Range("A:A")
Columns("A")

至于检查列是否包含特定条件,我建议使用工作表公式Countif:

MsgBox WorksheetFunction.Countif(Columns("A"), Day(Now)) > 0

要查找列中包含条件的所有单元格,可以使用Range.Find方法:

Dim rngFound As Range
Dim strFirst As String
Dim lDayNum As Long

lDayNum = Day(Now)
Columns("A").Interior.Color = xlNone

Set rngFound = Columns("A").Find(lDayNum, Cells(Rows.Count, "A"), xlValues, xlWhole)
If Not rngFound Is Nothing Then
    strFirst = rngFound.Address
    Do
        rngFound.Interior.Color = RGB(255, 0, 0)
        Set rngFound = Columns("A").Find(lDayNum, rngFound, xlValues, xlWhole)
    Loop While rngFound.Address <> strFirst
End If

最后,使用某些条件格式可以更轻松地实现这一点。