为什么我不能把这个范围作为一个variables来传递?

鉴于这一声明:

Dim myRange As Range Set myRange = Sheets("Dashboard").Range("$J$3:$K$9") 

为什么这不工作?

 mySub (myRange) 

是的,这是吗?

 mySub (Sheets("Dashboard").Range("$J$3:$K$9")) 

当我尝试传递myRange我只是Run-time error '424': Object required

放下这个包子

 mySub myRangePassedByReference 

通过将参数括在括号中,您可以强制传递它ByVal

 mySub (myRangePassedByValue) 

…即使mySub使用参数ByRef ,隐式或显式(当没有指定修饰符时, ByRef是默认值)。


正如评论中所build议的那样,您可以在前面添加一个Call关键字,但请注意Call已经过时了大约20年,所以不要那么做。