web-dev-qa-db-ja.com

モジュラーフィールドアクセス修飾子としてのDim、Global、Public、およびPrivateの違いは何ですか?

VB6/VBAでは、特定のSubまたはFunctionメソッドの外部でモジュールレベルの変数を宣言できます。モジュール内でPrivatePublicを使用したことがあるので、次のように理解します。

  • Public-モジュール内のすべてのコードとモジュール外のすべてのコードに表示され、基本的にグローバルになります。
  • Private-モジュール内のコードにのみ表示されます。

モジュラー変数の修飾子としてDimGlobalを使用できることに気付きました。モジュラーフィールドのアクセス修飾子として使用する場合、DimおよびGlobalはそれぞれPrivateおよびPublicと異なりますか?もしそうなら、それらはどう違うのですか?

65
Ben McCormack

DimPrivateは同じように機能しますが、一般的な規則では、モジュールレベルでPrivateを使用し、Sub/FunctionレベルでDimを使用します。 PublicGlobalは機能がほぼ同じですが、Globalは標準モジュールでのみ使用できますが、Publicはすべてのコンテキスト(モジュール、クラス、コントロール、フォームなど)Globalは、古いバージョンのVBからのものであり、下位互換性のために保持されている可能性がありますが、Publicによって完全に置き換えられました。 。

90
Joe Jordan