vba – 正确地将范围值传递给函数
在我的应用程序中,我调用一个函数并传递4个值来计算单元格地址:
nettowertadresse = searchAdress(Dateiname, CurrentSheet, "Nettowert", Range("A1:C60"))
function:
Function searchAdress(inputworkbook As String, inputsheet As String, inputsearchtext As String, inputrange As Range) As Range With Workbooks(inputworkbook).Sheets(inputsheet).Range(inputrange) Set searchAdress = .Find(inputsearchtext, LookIn:=xlValues) End With End Function
现在的问题是,我得到错误1004“应用程序定义或对象定义的错误”,我认为也许范围不正确通过,因为debugging器跳转到该function时显示variables“input范围”没有值。 请给出一些关于如何使这个function工作的build议。 谢谢。
您的函数inputrange as Range
声明inputrange as Range
。 这意味着你的函数内的对象是一个Range
对象。
所以你不应该使用它作为.Range(inputrange)
。 而是尝试使用这个代码,它正确地把它作为一个Range
对象:
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
另外请注意,代码中有另一个调用这个函数的错误。 当您将nettowertadresse
variables赋值给返回值时,您需要使用关键字Set
:
Set nettowertadresse = searchAdress(Dateiname, CurrentSheet, "Nettowert", Range("A1:BA2"))
否则,您将遇到运行时错误“91”,您在后续问题中提到。
你添加一个Range到你的函数中的rangeobject,你的函数看起来像这样:
With Workbooks(inputworkbook).Sheets(inputsheet).Range(Range("A1:C60")) Set searchAdress = .Find(inputsearchtext, LookIn:=xlValues) End With
你应该改变这个:
Function searchAdress(inputworkbook As String, inputsheet As String, inputsearchtext As String, inputrange As String) As Range With Workbooks(inputworkbook).Sheets(inputsheet).Range(inputrange) Set searchAdress = .Find(inputsearchtext, LookIn:=xlValues) End With End Function
然后通过这个函数:
nettowertadresse = searchAdress(Dateiname, CurrentSheet, "Nettowert", "A1:C60")