当FIND不返回结果时退出函数

时间:2011-03-15 11:16:39

标签: excel excel-vba excel-2003 vba

我想拥有自己的功能,可以在多个工作表上搜索相同的区域。我的想法是通过一组工作表(这里是工作簿中的所有工作表)并使用Find来搜索该区域。现在,如果第一张纸上的搜索成功,我不希望从下面的不成功搜索中覆盖结果,那里是if条件。

Function SheetsFind(LookUpValue As Integer) As Variant
    Dim SearchRange As Range

    For Each WS In Sheets
        Set SearchRange = WS.Range("A1:B6")

        If (SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole) <> "Nothing") Then
            SheetsFind = SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value
        End If
    Next WS

End Function

现在的问题是,如果条件中的查找不成功,则保留该函数,我收到#value错误。

为什么我的功能不仅仅是继续下一次迭代?

1 个答案:

答案 0 :(得分:1)

Range.Find返回另一个范围对象,因此你遇到了问题。

试试这个:

Function SheetsFind(LookUpValue As Integer) As Variant

    Dim SearchRange As Range
    Dim oResult As Excel.Range
    Dim ws As Worksheet

    For Each ws In Sheets
        Set SearchRange = ws.Range("A1:B6")

        Set oResult = SearchRange.Find(LookUpValue, LookIn:=xlValues, LookAt:=xlWhole)

        If Not oResult Is Nothing Then

            SheetsFind = oResult.Offset(0, 1).Value

        End If

    Next ws

End Function