基于颜色的返回范围

时间:2014-05-23 19:20:47

标签: excel vba excel-vba

我正在尝试在excel中编写一个UDF,它迭代给定范围,查找该范围内给定背景颜色的单元格,然后返回包含该背景颜色的单元格范围。我对VBA非常陌生,我不确定我是否正在谷歌搜索我正在寻找的东西。这是我到目前为止给出的代码。

Function findRed(MyRange As Range) As Variant
Dim redRange As Range
Application.Volatile
For Each cell In MyRange
    If cell.Interior.ColorIndex = 3 Then

    End If
 Next cell

End Function

我在网上发现了一个简单的函数,可以返回包含背景颜色的单元格数,但是我不知道在IF语句中要做什么。找到红色的细胞然后做什么?为了返回实际上是红色的单元格范围。

2 个答案:

答案 0 :(得分:1)

测试:

Function findRed(MyRange As Range) As Range
Dim redRange As Range, cell As Range
Application.Volatile
For Each cell In MyRange
    If cell.Interior.ColorIndex = 3 Then
        If redRange Is Nothing Then
            Set redRange = cell
        Else
            Set redRange = Application.Union(redRange, cell)
        End If
    End If
 Next cell
 Set findRed = redRange
End Function

编辑:如果你想检查返回的范围地址......

Function findRedAddress(MyRange As Range) As String
    Application.Volatile
    On Error Resume Next
    findRedAddress = findRed(MyRange).Address(False, False)
End Function

答案 1 :(得分:-2)

取决于您对找到的范围需要做什么?例如:
     MsgBox cell.Address 将返回单元格的地址
     MsgBox cell.value 会返回单元格的内容