VBAにおける「公開/非公開」の考え方
Excel VBAでは、クラスモジュールや標準モジュールの中で定義したプロシージャや変数を「外部から使えるか/内部だけで使えるか」を制御できます。これが「公開(Public)」と「非公開(Private)」の仕組みです。
基本ルール
- Public
- どこからでも呼び出せる(他のモジュールやクラスからも利用可能)
- 例:
Public Sub Test() - クラスモジュールで
Public Propertyを定義すると、外部からアクセスできるプロパティになる
- Private
- そのモジュール内だけで有効(外部からは呼び出せない)
- 例:
Private Sub Helper() - クラスモジュールで
Private Propertyを定義すると、内部専用のプロパティになる
標準モジュールの場合
' 標準モジュール Module1
Public Sub ShowMessage()
MsgBox "これは公開メソッドです"
End Sub
Private Sub HiddenMessage()
MsgBox "これはこのモジュール内でしか呼べません"
End Sub
VBShowMessage→ 他のモジュールから呼び出せるHiddenMessage→ Module1の中でしか使えない
クラスモジュールの場合
' クラスモジュール Person
Private name As String
Public Property Get Name() As String
Name = name
End Property
Public Property Let Name(ByVal value As String)
name = value
End Property
Private Sub SecretMethod()
MsgBox "これはクラス内部専用"
End Sub
VBNameプロパティ → 外部からobj.Nameとしてアクセス可能SecretMethod→ クラス内部でしか使えない
ポイントまとめ
- Public → 外部公開(他モジュールや他クラスから利用可能)
- Private → 内部専用(定義したモジュール/クラスの中だけ)
- 変数も同じ:
Publicなら他モジュールから参照可能、Privateなら内部だけ - 設計のコツ:
- 外部に見せたい最小限だけを
Publicにする - 内部処理用は
Privateにして隠す → カプセル化
- 外部に見せたい最小限だけを
👉 つまり「モジュールやクラスの外から使わせたいものはPublic、内部処理だけにしたいものはPrivate」と覚えるとシンプルです。


