我刚刚发现,显然可以在VBA类中声明公共数组,而可以将其声明为私有。
我想知道这是出于技术原因还是微软的设计选择。
这两种解释对我来说都没有多大意义:我看不到一个技术原因,它会阻止成员在可以公开时成为私有成员,因为这只是一项访问检查在运行时。
另一方面,我不明白为什么在声明公共整数或其他数据类型是完全可以的同时,为什么不能声明公共数组。
如果有人能解释所有这些背后的原因,我将不胜感激。
答案 0 :(得分:1)
我相信您需要向创建Visual Basic(甚至是Basic)编程语言的人员询问“为什么”。这似乎是语言固有的。就VBA而言,限制来自VB所基于的VB6。我在Google搜索中找到了this reference:
在表单中将数据声明为公共数据意味着您正在创建属性 在该表格上,使用缩写语法。属性不能是数组 使用该快捷方式语法。
换句话说,“公共”仅表示“全局” 老式静态(BAS)模块。对于其他一切,公共手段 完全不同的东西。
还有this:
您可以使用Collection对象或您自己的数组来代替数组 集合类。 VB6不允许声明常量,数组, 用户定义的类型为“公共”。
来自VBA帮助主题不允许将常量,定长字符串,数组,用户定义的类型和Declare语句用作对象模块的公共成员
并非对象模块中的所有变量都可以声明为Public。 但是,默认情况下过程是“公共”的,而“属性”过程可以 用于句法模拟变量。此错误有 以下原因和解决方法:
特别是关于数组
您在对象模块中声明了Public数组。虽然程序 无法返回数组,它可以返回包含数组的Variant。 要在类模块中模拟Public数组,请使用一组Property 接受并返回包含数组的Variant的过程。