vba - 从函数返回范围值

时间:2014-11-10 10:55:31

标签: excel vba excel-vba

我想将一个范围值传递给一个函数,然后将得到的范围值返回给我的子。

子:

Dim nettowertadresse As Range

nettowertadresse = searchAdress(Dateiname, CurrentSheet, "Nettowert", Range("A1:BA2"))

功能:

Function searchAdress(inputworkbook As String, inputsheet As String, inputsearchtext As String, inputrange As Range) As Range

  With Workbooks(inputworkbook).Sheets(inputsheet)
      Set searchAdress = inputrange.Find(inputsearchtext, LookIn:=xlValues)
  End With

End Function

第一个问题是我没有在函数中获得范围值。我认为我需要在searchAdress中使用.adress,但它不会那样工作。也许与另一个将地址传递给searchAdress的对象?但无论如何我得到错误91.请告知如何将函数中找到的单元格中的地址返回到我的子中的变量nettowertadresse。

2 个答案:

答案 0 :(得分:3)

致电searchAddress

Set nettowertadresse = searchAdress(.....) 

问题在于将searchAdress的返回值分配给nettowertAddress

答案 1 :(得分:2)

你有两个问题:

  1. 运行时错误'91':对象变量或未设置块变量
  2. 没有看到您返回了Range个对象
  3. 1 - 运行时错误'91'

    对于第一个错误,原因是您调用Function的方式。正如弗雷克斯指出的那样,you need to use the keyword Set when calling searchAdress()

    您还可以在以下位置看到:

    原因是您尝试将对象结果分配给变量。在VBA中设置对象时,使用Set关键字。

    2 - 没有看到Range对象

    代码 会根据需要返回Range个对象。您可以通过一些调试测试代码来确认:

    Set nettowertadresse = searchAdress(Dateiname, CurrentSheet, "Nettowert", Range("A1:BA2"))
    nettowertadresse.Select
    

    MsgBox nettowertaddresse.Address
    

    这将选择包含您单词的单元格,或在弹出框中显示地址。

    您可能正在使用MsgBox()或将鼠标悬停在编辑器中的变量上,该变量返回实际范围值(nettowertadresse.value


    这两个问题都与前几天的问题有关,这些问题解决了这些完全相同的问题,但在您开始使用自己的功能之前:

    看看那里的答案如何与我在这里给你的解释直接相关。不同之处在于您现在正在使用自己的功能,但基本的基本问题仍然相同。