是否有技术原因不能在VBA类中声明公共数组?

时间:2018-08-27 06:42:03

标签: arrays vba class member-access

我刚刚发现,显然可以在VBA类中声明公共数组,而可以将其声明为私有。

我想知道这是出于技术原因还是微软的设计选择。

这两种解释对我来说都没有多大意义:我看不到一个技术原因,它会阻止成员在可以公开时成为私有成员,因为这只是一项访问检查在运行时。

另一方面,我不明白为什么在声明公共整数或其他数据类型是完全可以的同时,为什么不能声明公共数组。

如果有人能解释所有这些背后的原因,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我相信您需要向创建Visual Basic(甚至是Basic)编程语言的人员询问“为什么”。这似乎是语言固有的。就VBA而言,限制来自VB所基于的VB6。我在Google搜索中找到了this reference

  

在表单中将数据声明为公共数据意味着您正在创建属性   在该表格上,使用缩写语法。属性不能是数组   使用该快捷方式语法。

     

换句话说,“公共”仅表示“全局”   老式静态(BAS)模块。对于其他一切,公共手段   完全不同的东西。

还有this

  

您可以使用Collection对象或您自己的数组来代替数组   集合类。 VB6不允许声明常量,数组,   用户定义的类型为“公共”。

来自VBA帮助主题不允许将常量,定长字符串,数组,用户定义的类型和Declare语句用作对象模块的公共成员

  

并非对象模块中的所有变量都可以声明为Public。   但是,默认情况下过程是“公共”的,而“属性”过程可以   用于句法模拟变量。此错误有   以下原因和解决方法:

特别是关于数组

  

您在对象模块中声明了Public数组。虽然程序   无法返回数组,它可以返回包含数组的Variant。   要在类模块中模拟Public数组,请使用一组Property   接受并返回包含数组的Variant的过程。