VBA关键字 "global"

76 浏览
0 Comments

VBA关键字 "global"

在VB6/VBA中,您可以在特定的SubFunction方法之外声明模块级变量。我之前在模块内部使用过PrivatePublic,并且理解它们的作用如下:\n

    \n

  • Public - 对模块内部的所有代码和模块外部的所有代码可见,基本上是全局的。
  • \n

  • Private - 仅对模块内部的代码可见。
  • \n

\n我注意到您可以使用DimGlobal作为模块变量的修饰符。当它们作为模块字段的访问修饰符时,DimGlobalPrivatePublic有何不同?如果有,它们的区别是什么?

0
0 Comments

VBA关键字"global"的出现原因是为了向后兼容性,但已经完全被"public"关键字取代。"global"关键字只能在标准模块中使用,而"public"关键字可以在所有上下文中使用(模块、类、控件、表单等)。

"Private"和"Dim"关键字在功能上是相同的,尽管通常的约定是在模块级别使用"Private",在子程序/函数级别使用"Dim"。"Public"和"Global"关键字在功能上几乎相同,但是"Global"只能在标准模块中使用,而"Public"可以在所有上下文中使用。"Global"是来自早期版本的VB,并且很可能为了向后兼容性而保留,但已经被"Public"完全取代。

全局变量在执行后保持其值。使用"Public"声明的变量可以在所有应用程序的所有模块中的所有过程中使用,除非启用了"Option Private Module"选项;在这种情况下,变量仅在所在项目中公开。此外,需要注意的是,"Public"语句不能在类模块中用于声明固定长度字符串变量。然而,由于上述两种情况都比较少见,所以不太可能成为实际问题。

虽然问题只涉及模块级别的声明,但为了完整性(和新手),值得明确提到"Private"和"Public"甚至不允许在过程内部使用。根据官方文档的描述,"Private"语句在这方面似乎有一个错误(它几乎与并且可能是从"Dim"语句的文档中复制的):"When you use the Private statement in [sic!] a procedure..."。

有关"global"被"public"取代的废弃说明是否有文档可供参考?

0