【VBA】プロパティとメソッドの定義|クラスモジュール入門(Let / Get / Set 実例付き)

クラスモジュールを使う最大の魅力は、
プロパティ(設定されるデータ) と
メソッド(動作する処理)
を独自に定義できる点です。

Excel の Range や Worksheet と同じように、
「データ」と「動作」を自作オブジェクトに持たせることで、
コードの見通しが大幅に良くなり、再利用性も高まります。

この記事では、クラスモジュールの核となる
「プロパティ」と「メソッド」 の基本を、
実例付きでわかりやすく解説します。


スポンサーリンク

1. プロパティとは何か(クラスの“データ”)

プロパティは、クラスが持つ 値・状態 を表すデータです。

Excel オブジェクトで言えば

  • Range.Value
  • Range.Address
  • Workbook.Name

といったものがプロパティにあたります。

自作クラスでは、同じように

  • 顧客名
  • 年齢
  • 金額
  • 状態(完了/未完了)

など、オブジェクトが持つべき情報を自由に定義できます。


◆ プロパティの作り方(Let / Get / Set)

プロパティには以下の種類があります。

種類用途
Property Let値型(文字列、数値など)の代入
Property Getプロパティの取得
Property Setオブジェクト型の代入

もっとも基本的な例を示すと、以下のようになります。


▼ 例:名前を管理するプロパティ(Let / Get)

クラスモジュール:clsPerson

Option Explicit

Private pName As String '名前を保持する変数

Property Let Name(value As String)
    pName = value
End Property

Property Get Name() As String
    Name = pName
End Property

標準モジュール側で使うとこうなります:

Sub TestPerson()
    Dim p As New clsPerson
    p.Name = "田中" 'Property Letが実行される
    
    MsgBox p.Name 'Property Getが実行される
End Sub

ポイント

  • Private 変数でデータを隠ぺい(カプセル化)
  • Let / Get を使うことで外部から安全にアクセス

◆ オブジェクト用プロパティ(Set)

オブジェクト型を扱う場合は Set を使います。

Private pRng As Range

Property Set TargetRange(r As Range)
    Set pRng = r
End Property

Property Get TargetRange() As Range
    Set TargetRange = pRng
End Property

スポンサーリンク

2. メソッドとは何か(クラスの“動作”)

メソッドは、オブジェクトが持つ 処理・動作 を意味します。

Range.Clear、Worksheet.Delete のように、
自作クラスでも Sub / Function を定義すれば、
それが“メソッド”として機能します。


▼ 例:名前つきのメッセージを表示するメソッド

Public Sub ShowGreeting()
    MsgBox "こんにちは!私は " & pName & " です。"
End Sub

標準モジュール側から呼び出すと:

Sub TestMethod()
    Dim p As New clsPerson
    p.Name = "佐藤"
    p.ShowGreeting 'メソッドの呼び出し
End Sub

メソッドでは通常の Sub と同じように、
複雑な処理・他プロシージャの呼び出しなども行えます。


スポンサーリンク

3. プロパティとメソッドの組み合わせが“オブジェクト特性”を作る

プロパティとメソッドを定義することで、
クラスモジュールは初めて「オブジェクト」として機能します。

たとえば以下のようなクラスが簡単に作れます:

  • 顧客オブジェクト(氏名・住所・購入履歴を持ち、登録メソッドを持つ)
  • 計算オブジェクト(合計・平均などのプロパティと計算メソッド)
  • 業務フローオブジェクト(状態と処理をまとめたもの)

実務で「1つのまとまりとして扱いたい処理」は、
クラスにすると格段に扱いやすくなります。


スポンサーリンク

4. まとめ

  • プロパティ=オブジェクトの“データ”
  • メソッド=オブジェクトの“動作”
  • Property Let / Get / Set を使って安全にデータを管理
  • Sub / Function を書けば自作メソッドとして利用可能

コメント

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