【问题标题】:Is there a technical reason why I cannot declare a public array in a VBA class?我不能在 VBA 类中声明公共数组是否有技术原因?
【发布时间】:2018-08-27 06:42:02
【问题描述】:
我刚刚发现,在 VBA 类中声明公共数组显然是不可能的,而将其声明为私有则很好。
我想知道这是否有技术原因,或者这是 Microsoft 的设计选择。
这两种解释对我来说都没有多大意义:我看不出有什么技术原因会阻止成员私有而 是公开的,因为这只是检查的访问检查在运行时。
另一方面,我不明白为什么不能声明公共数组,而声明公共整数或其他数据类型完全没问题。
如果有人能解释这一切背后的原因,我将不胜感激。
【问题讨论】:
标签:
arrays
vba
class
member-access
【解决方案1】:
我相信您需要向创建 Visual Basic(甚至可能是 Basic)编程语言的人询问“为什么”。它似乎是语言固有的。就 VBA 而言,限制来自 VBA 所基于的 VB6。我在 Google 搜索中找到了this reference:
在表单中将数据声明为公共意味着您正在创建一个属性
在该表单上,使用缩写语法。属性不能是数组
使用该快捷语法。
换一种说法,“公共”仅意味着“全球”
老式静态(BAS)模块。对于其他一切公共手段
完全不同的东西。
还有this:
您可以使用 Collection 对象或您自己的对象来代替数组
收藏类。 VB6 不允许声明常量、数组、
用户定义类型为公共。
来自 VBA 帮助主题常量、固定长度字符串、数组、用户定义类型和 Declare 语句不允许作为对象模块的公共成员
并非对象模块中的所有变量都可以声明为 Public。
但是,程序默认是 Public,Property 程序可以
用于在语法上模拟变量。这个错误有
以下原因及解决方法:
关于数组,特别是
您在对象模块中声明了一个公共数组。虽然一个程序
不能返回数组,它可以返回包含数组的 Variant。
要在类模块中模拟 Public 数组,请使用一组 Property
接受并返回包含数组的 Variant 的过程。