将范围作为函数parameter passing

我正在写一个函数,需要传入一个指定的范围,但是当我调用这个函数的时候,我总是收到一个错误。 这里有一些示例代码 – 函数中的代码是不重要的,因为我想要做的就是能够使用范围内的任何内容。

我的声明:

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 

我收到一个错误,说“编译错误:预期:=”。

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

 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)