在处理我的PowerPoint宏时,我注意到以下内容:
获取当前活动幻灯片:
Dim currSlide As Slide
Set currSlide = Application.ActiveWindow.View.Slide
获取新创建的文本框:
Dim textbox As Shape
Set textbox = currSlide.Shapes.AddTextbox(...)
我是VBA的新手,曾经使用过Java,C ++和... C#。为什么必须在上面使用Set
?为什么使用Slide
& Shape
会产生错误吗?在这方面,VBA在变量声明的工作方式上有何不同?
答案 0 :(得分:2)
这取自Byte Comb - Values and References in VBA
在VBA中,通过在分配引用时要求使用关键字Set,可以明确显示值类型和引用类型之间的差异。此外,您经常会看到分配一个称为“绑定”的引用。
Byte Comb详细介绍了VBA的互操作性。我强烈建议任何认真使用VBA进行编程的人都会通过它阅读。
用外行的术语:使用Set,以便编译器知道编程想要一个变量引用一个Object类型。这样,当您尝试为对象赋值时,编译器将知道抛出错误。
另一个原因是对象可以有默认值。
在这个例子中,我有一个名为value
的变量,它是Variant类型。变体可以是VBA中的任何类型。请注意编译器如何知道在value = Range("A1")
时分配Range的值,并在Set
中使用关键字Set value = Range("A1")
时设置对Range的引用。