以编程方式分配Bang参数?

Iro*_*onX 3 excel vba excel-vba

我没有成功使用Bang(!)运算符而没有它的参数被硬编码,即Me.VBProject.References!Excel.在此示例中,Excel引用是硬编码的.出于沮丧,我尝试了所有可以想到的排列,试图利用它:

[Me.VBProject.References!(str)]
[Me.VBProject.References! & (str)]
["Me.VBProject.References!" & str]
["Me.VBProject.References!" & (str)]
Run Code Online (Sandbox Code Playgroud)

还有更多的parens添加,以确保适当的预评估,包括速记Application.evaluate方法.纳达!

Thu*_*ame 5

不,你做不到.

bang运算符只是调用对象的默认成员的快捷方式,并将bang之后的文本作为字符串传递给默认成员的第一个参数:

爆炸符号:

Me.VBProject.References!Excel
Run Code Online (Sandbox Code Playgroud)

完全等同于:

Me.VBProject.References.Item("Excel")
Run Code Online (Sandbox Code Playgroud)

并且,因为它是默认成员,您可以省略Item函数调用:

Me.VBProject.References("Excel")
Run Code Online (Sandbox Code Playgroud)

所以,要使用你的(名字很糟糕的)变量str:

str = "Excel"
Debug.Print Me.VBProject.References.Item(str).Name
Run Code Online (Sandbox Code Playgroud)

  • 而且他看到它很好,并且有光 - :+1: (2认同)