String是哪个数据类型类别

Kal*_*lle 5 vba

据我了解,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)

是正确的。因此引用类型和对象类型是不等价的。有什么不同?

Mat*_*don 4

您的 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