将范围作为函数参数传递

时间:2015-07-06 16:14:18

标签: excel vba excel-vba excel-2010

我正在编写一个需要将指定范围传递给它的函数,但每次调用函数时我都会收到错误。这里是一些示例代码 - 函数中的代码并不重要,因为我想要做的就是能够使用传入的范围来处理任何内容。

我的声明:

Sub exampleFunction (exampleRange as Range)

    exampleRange.Borders(xlEdgeLeft).Weight = xlMedium

End Sub

但是当我尝试用这段代码调用函数时:

Dim myRange As Range
Set myRange = Sheet1.Range ("C2") 

exampleFunction (myRange) ' <-- This is what doesn't work

我收到一条错误,上面写着&#34;编译错误:预期:=&#34;。

在函数调用期间,我需要做什么才能正确传递myRange?

1 个答案:

答案 0 :(得分:1)

exampleFunction (myRange)

应该是

exampleFunction myRange

或多个参数:

exampleFunction myRange, myString, myInt

只有在方法返回值或使用Call关键字时才使用()。

如果你将参数包装在()中 - 并且你没有调用函数或使用调用 - 那么VBA将首先评估参数,然后将其传递给你的方法 - 你经常不要那样。

您可以在立即窗口中看到此评估的影响:

? typename( Range("A1") )    '>> "Range"

? typename( (Range("A1")) )  '>> "Double" (if A1 has a numeric value)
                             '   "String" (if A1 has a text value)