我想拥有自己的功能,可以在多个工作表上搜索相同的区域。我的想法是通过一组工作表(这里是工作簿中的所有工作表)并使用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
错误。
为什么我的功能不仅仅是继续下一次迭代?
答案 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