0

我刚刚发现显然不可能在 VBA 类中声明一个公共数组,而将它声明为私有是可以的。

我想知道这是否有技术原因,或者这是否是微软的设计选择。

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

另一方面,我不明白为什么不能声明公共数组,而声明公共整数或其他数据类型完全没问题。

如果有人能解释这一切背后的理性,我将不胜感激。

4

1 回答 1

1

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

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

换一种说法,“公共”仅意味着老式静态(BAS)模块的“全局”。对于其他一切,公共意味着完全不同的东西。

这:_

您可以使用集合对象或您自己的集合类来代替数组。VB6 不允许将常量、数组、用户定义类型声明为 Public。

来自 VBA 帮助主题Constants, fixed-length strings, arrays, user-defined types, and Declare statements not allowed as Public members of an object module

并非对象模块中的所有变量都可以声明为 Public。但是,过程默认是公共的,并且属性过程可以用来在语法上模拟变量。此错误有以下原因和解决方法:

关于数组,特别是

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

于 2018-08-27T12:50:02.550 回答