プロシージャに有効範囲(スコープ)を設定する

VBA

変数や定数だけではなくプロシージャにもスコープを設定することができます。

プロシージャのスコープ

プロシージャのスコープはデフォルトではpublicとなっています。

何も設定しない下記のようなSubプロシージャは、すべてのモジュールから呼び出しが可能になっています。

Sub test()
Dim x As String
  x = "hello"
  MsgBox x
End Sub
※コードの見方
白・・・コード
紫・・・コメント
青・・・プロシージャの宣言
その他・・・コードを見やすくするために使うかも

宣言の種類

Subプロシージャのスコープの種類をご紹介します

『Public』すべてのモジュールで利用できる

すべてのモジュールで汎用的に利用したい場合はPublicで宣言します。

Public Sub test()
Dim x As String
  x = "hello"
  MsgBox x
End Sub

先ほども説明していますが、先頭にPublicを付けなくてもデフォルトでPublicとなっています。

ですが、作成時にPublicであることを前提としたプロシージャであれば、明示的に宣言しておく方が安心です。

後から別の人が改修やメンテナンスをした際に、誤ってスコープを変更したことで挙動がおかしくなるなどのトラブルを回避することができます。

『Private』モジュール内で利用できる

同じモジュール内であればどのプロシージャでも呼び出すことができる宣言方法です。

Private Sub test()
Dim x As String
  x = "hello"
  MsgBox x
End Sub

タイトルとURLをコピーしました