据我了解,VBA 中有两种不同的数据类型分类方法。
我假设对象类型与引用类型相同。但我读到对象类型和非对象类型之间的赋值存在差异:
Dim i As Integer
i = 1
Dim chrt As Chart
Set chrt = something
Run Code Online (Sandbox Code Playgroud)
注意“设置”。现在在以下链接中,字符串被归类为引用类型。
http://msdn.microsoft.com/en-us/library/t63sy5hs.aspx
但
Dim str As String
Set str = "abc"
Run Code Online (Sandbox Code Playgroud)
是错误的并且
Dim str As String
str = "abc"
Run Code Online (Sandbox Code Playgroud)
是正确的。因此引用类型和对象类型是不等价的。有什么不同?
您的 MSDN 链接指的是Visual Studio 2013 (.NET),其中String
确实是一个对象(就像 .net 框架中的所有内容一样)。
VBA 字符串是值,而不是对象。
据我了解,VBA 中有两种不同的数据类型分类方法。
- 对象类型与非对象类型
- 值类型与引用类型
比那更简单。对象类型 是引用类型,非对象类型 是值类型。
在 VBA 中,对象引用是使用Set
关键字分配的;过去,通常使用关键字来赋值Let
(出于兼容性原因,我相信这仍然有效);这就是属性设置器用于Let
值类型(如 中Public Property Let Foo(value As Integer)
)和Set
引用类型(如 中)的原因Public Property Set Foo(value As Object)
。
语言不断发展,Let
关键字最终因赋值而被放弃;Set
对于对象引用分配仍然是必需的。
但在 VBA 中 aString
是一个值,如 anInteger
或 a Boolean
。