将用户定义的范围作为输入功能

时间:2013-12-04 17:15:44

标签: excel vba excel-vba

我在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

1 个答案:

答案 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