Excel VBA | クラスやモジュール間の公開/非公開

Excel VBA VBA
スポンサーリンク

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
VB
  • ShowMessage → 他のモジュールから呼び出せる
  • 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
VB
  • Name プロパティ → 外部から obj.Name としてアクセス可能
  • SecretMethod → クラス内部でしか使えない

ポイントまとめ

  • Public → 外部公開(他モジュールや他クラスから利用可能)
  • Private → 内部専用(定義したモジュール/クラスの中だけ)
  • 変数も同じPublic なら他モジュールから参照可能、Private なら内部だけ
  • 設計のコツ
    • 外部に見せたい最小限だけを Public にする
    • 内部処理用は Private にして隠す → カプセル化

👉 つまり「モジュールやクラスの外から使わせたいものはPublic、内部処理だけにしたいものはPrivate」と覚えるとシンプルです。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました