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