我在excel中对VBA相对较新。我想编写一个自定义函数,它将用户定义的范围作为输入,然后搜索该范围内的特定单词。到目前为止,以下代码有效,但它只搜索预定义范围“a2:g2”,但我希望在用户填写时将更改为“a3:g3”等内容:
Function findme()
With Worksheets("Filtered").Range("a2:g2")
Set c = .Find("XXXX", LookIn:=xlValues)
If Not c Is Nothing Then
findme = "Match Found"
Else: findme = "No match"
End If
End With
我认为这应该有效,但事实并非如此。它返回“VALUE”
Function findme(myrange as range)
With Worksheets("Filtered").Range(myrange)
Set c = .Find("XXXX", LookIn:=xlValues)
If Not c Is Nothing Then
findme = "Match Found"
Else: findme = "No match"
End If
End With
答案 0 :(得分:2)
myrange不会作为地址/字符串传递给函数,它是一个实际范围。在代码中使用它的方式(Worksheets("Filtered").Range(myrange)
)需要一个地址。您可以保留代码并使用myrange.address
而不只是myrange
,或者您可以使用您的变量就可以继续使用的事实。
Function findme(myrange as range) as string
With myrange
Set c = .Find("XXXX", LookIn:=xlValues)
If Not c Is Nothing Then
findme = "Match Found"
Else: findme = "No match"
End If
End With