【问题标题】: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 的过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多