带括号调用VBA函数时,能否使用命名参数?
带括号调用VBA函数时完全可以使用命名参数!
当然可以!这正是命名参数设计的核心意义之一——让需要获取返回值的函数调用,也能保持清晰可读,彻底摆脱那些占位用的空逗号。
你完全可以把原来那种可读性极差的写法:
Set opened_wb = Workbooks.Open(file, , , , , , , , , , , , , True)
改成带括号+命名参数的版本,既符合VBA“使用返回值需加括号”的规则,又让代码一目了然:
Set opened_wb = Workbooks.Open(Filename:=file, Local:=True)
几个实用小细节:
- 命名参数的顺序不固定,只要参数名称和函数定义匹配就行,比如你也可以反过来写:
Set opened_wb = Workbooks.Open(Local:=True, Filename:=file) - 若需要混合位置参数和命名参数,位置参数必须放在命名参数之前,但除非有特殊需求,更推荐全用命名参数来最大化可读性。
- 这个规则适用于所有VBA函数,包括自定义函数。比如你写了一个自定义计算函数:
调用时带括号取返回值,用命名参数的写法是:Function CalculateTotal(Price As Double, Quantity As Integer, Discount As Double) As Double CalculateTotal = Price * Quantity * (1 - Discount) End FunctionDim total As Double total = CalculateTotal(Price:=99.9, Quantity:=5, Discount:=0.1)
总之,不用再忍受一堆空逗号的混乱写法了,带括号调用函数时放心用命名参数就好!
内容的提问来源于stack exchange,提问作者Harper
相关产品推荐
相关产品推荐

