小能豆

作为模块化字段访问修饰符,Dim、Global、Public 和 Private 之间有什么区别?

vb6

Sub在 VB6/VBA 中,您可以在特定方法或方法之外声明模块级变量Function。我之前在模块内部使用过PrivatePublic理解它们,如下所示:

  • Public- 对模块内部的所有代码以及模块外部的所有代码均可见,本质上使其成为全局的。
  • Private- 仅对模块内的代码可见。

我注意到您可以使用DimandGlobal作为模块化变量的修饰符。当用作模块化字段的访问修饰符时, 和 分别Dim与和Global不同吗?如果是这样,它们有何不同?Private``Public


阅读 86

收藏
2024-05-22

共1个答案

小能豆

在 VB6/VBA 中,DimGlobal在声明模块级变量时具有特定的角色,并且它们的范围和可见性Private确实有所不同。Public以下是每项的详细解释:

民众

  • 可见性Public在模块级别声明的变量可以从同一项目中的任何其他模块或过程访问。
  • 用法:在模块级别声明以创建真正的全局变量。
  • 句法Public myVar As Integer

私人的

  • 可见性Private在模块级别声明的变量只能在声明它的模块内访问。
  • 用途:用于封装变量,防止模块外部访问。
  • 句法Private myVar As Integer

暗淡

  • 可见性:当Dim在模块级别使用时,其行为类似于Private.该变量只能在声明它的模块内访问。
  • 用法Dim通常用于在过程中声明变量,但在模块级别,它将变量的范围限制在模块内。
  • 句法Dim myVar As Integer

全球的

  • 可见性Global变量可以从同一项目中的任何模块或过程访问,类似于Public.
  • 用法:在 VB6 中(不是在 VBA 中),Global可用于声明真正的全局变量。然而,Public通常是优选的并且更常用。
  • 句法Global myVar As Integer

差异总结

  • 模块范围
  • Public:模块级,可在项目范围内访问。
  • Private:模块级,只能在模块内访问。
  • Dim:模块级,作用类似Private,仅在模块内可访问。
  • Global:项目范围内,与 类似Public,但不太常用。
  • 使用偏好
  • 用于Public整个项目中可访问的全局变量。
  • 用于Private只能在模块内访问的变量。
  • 用于Dim在过程中声明局部变量以及模块私有的模块级变量。
  • 在 VB6 中用于Global项目范围的变量,但Public出于清晰度和一致性的考虑,通常首选该变量。

例子

下面是一个例子来说明这些关键字的用法:

' In Module1

Public myPublicVar As Integer    ' Accessible from anywhere in the project
Private myPrivateVar As Integer  ' Accessible only within Module1
Dim myDimVar As Integer          ' Accessible only within Module1, acts like Private
Global myGlobalVar As Integer    ' Accessible from anywhere in the project (VB6 only, not VBA)

Sub TestModule1()
    myPublicVar = 10
    myPrivateVar = 20
    myDimVar = 30
    myGlobalVar = 40
End Sub

' In Module2

Sub TestModule2()
    myPublicVar = 50      ' Accessible, since it's Public
    ' myPrivateVar = 60   ' Error: Not accessible, since it's Private to Module1
    ' myDimVar = 70       ' Error: Not accessible, since it's Dim (Private) to Module1
    myGlobalVar = 80      ' Accessible, since it's Global (VB6 only)
End Sub

VBA注意事项

  • 在 VBA 中,Global不使用该关键字。相反,您使用它Public可以获得相同的结果。
  • 为了代码的清晰性和一致性,始终更喜欢 和PublicPrivate

了解这些差异将帮助您在 VB6/VBA 项目中有效管理变量范围。

2024-05-22