カテゴリ: Excel VBA 更新日: 2026/03/25

VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説

クラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
クラスモジュールとは?メリットと基本的な使い方を初心者向けに解説

先生と生徒の会話形式で理解しよう

生徒

「先生、VBAの編集画面にある『クラスモジュール』って何ですか?標準モジュールとは違うものなんですか?」

先生

「クラスモジュールは、自分専用の新しい『道具(オブジェクト)』を設計するための設計図のようなものですよ。」

生徒

「設計図……?なんだか難しそうですね。私のような初心者でも使い道はありますか?」

先生

「最初は難しく感じるかもしれませんが、仕組みがわかると複雑なプログラムをスッキリ整理できるようになります。まずは簡単な例え話から始めてみましょう!」

1. クラスモジュールとは「オリジナルの設計図」

1. クラスモジュールとは「オリジナルの設計図」
1. クラスモジュールとは「オリジナルの設計図」

Excel VBAには、最初から「シート」や「セル」といった便利な道具が用意されています。これらを専門用語でオブジェクトと呼びます。クラスモジュールとは、これらと同じように「自分だけの便利な道具」を自作するための設計図のことです。

例えば、あなたが「自動車」をプログラムで扱いたいと考えたとします。自動車には「色」や「車種」というデータがあり、「走る」「止まる」という動きがありますよね。これらを一つのセットとしてまとめた「自動車という型(クラス)」を定義するのがクラスモジュールの役割です。

標準モジュールが「上から順番に実行する手順書」だとすれば、クラスモジュールは「モノの性質と動きを定義した説明書」のようなものだと考えてください。パソコンを初めて触る方でも、「型紙(クラス)」から「実物(インスタンス)」を作る、というイメージを持つと分かりやすくなります。

2. なぜクラスモジュールを使うの?3つの大きなメリット

2. なぜクラスモジュールを使うの?3つの大きなメリット
2. なぜクラスモジュールを使うの?3つの大きなメリット

初心者のうちは標準モジュールだけでも十分マクロを作ることができます。しかし、プログラムが大きくなってくると、クラスモジュールを使うことで以下のような素晴らしい恩恵が受けられます。

  • プログラムがスッキリ整理される: データと処理をセットで管理できるため、どこに何が書いてあるか一目でわかるようになります。
  • 使い回し(再利用)が簡単になる: 一度作った設計図は、他のプログラムでも簡単に使い回すことができます。
  • 間違い(バグ)が減る: 道具の使い方が限定されるため、変な値を入力してエラーになるようなミスを未然に防ぎやすくなります。

これを専門用語でカプセル化と呼びます。大切な中身を「カプセル」の中に隠して、外からは決まったボタン(操作)だけが見えるようにする仕組みです。これにより、複雑な仕組みを知らなくても、安全に道具を使いこなせるようになるのです。

3. クラスモジュールの基本用語:プロパティとメソッド

3. クラスモジュールの基本用語:プロパティとメソッド
3. クラスモジュールの基本用語:プロパティとメソッド

クラスを理解するために避けて通れないのが「プロパティ」と「メソッド」という言葉です。自動車の例えで解説しましょう。

用語 意味 自動車の例
プロパティ そのモノが持っている「属性」や「データ」 車の色、ナンバー、ガソリン残量
メソッド そのモノができる「動作」や「処理」 アクセルを踏む(走る)、ブレーキをかける(止まる)

クラスモジュールの中には、この「プロパティ(どんなデータを持つか)」と「メソッド(どんな動きをするか)」を書き込んでいきます。これらを組み合わせることで、まるで本物のモノを扱うようにプログラミングができるようになるのです。

4. 【実践】クラスモジュールを作ってみよう

4. 【実践】クラスモジュールを作ってみよう
4. 【実践】クラスモジュールを作ってみよう

それでは、実際に「社員(Employee)」という簡単なクラスを作ってみましょう。VBE(開発画面)のメニューから「挿入」→「クラスモジュール」を選び、名前を clsEmployee に変更してください。

まずは、社員の名前を保存するための「プロパティ」を作成するコードです。


' クラスモジュール(名前:clsEmployee)の中に書く内容
Public Name As String ' 社員名を保存するプロパティ

' 挨拶をするメソッド(動作)
Sub SayHello()
    MsgBox "こんにちは、私は " & Name & " です!"
End Sub

ここでは Public という言葉を使っていますが、これは「外(標準モジュールなど)から自由に見ることができる」という意味の魔法の言葉です。これで「名前というデータ」を持ち、「挨拶するという動き」ができる設計図が完成しました。

5. 設計図から「実物」を作る:インスタンス化

5. 設計図から「実物」を作る:インスタンス化
5. 設計図から「実物」を作る:インスタンス化

設計図(クラス)を作っただけでは、まだマクロは動きません。設計図をもとに、メモリ上に「実物」を作り出す必要があります。この作業をインスタンス化と呼びます。

実物を作るには、標準モジュールで New というキーワードを使います。以下のコードを標準モジュールに書いてみましょう。


' 標準モジュールの中に書く内容
Sub UseClass()
    Dim taro As New clsEmployee ' 社員「太郎」という実物を作る
    
    taro.Name = "田中太郎" ' プロパティにデータをセット
    taro.SayHello ' メソッドを呼び出して挨拶させる
End Sub

このように、設計図から実体を作ることで、初めてプログラムの中でその道具を使えるようになります。一つの設計図から、太郎さん、花子さんといった複数の実体を別々に作ることも可能です。

6. 初心者がクラスを使うべきタイミング

6. 初心者がクラスを使うべきタイミング
6. 初心者がクラスを使うべきタイミング

「便利そうなのはわかったけど、いつ使えばいいの?」と思うかもしれません。初心者のうちは、以下のような場面で検討してみるのがおすすめです。

  1. 同じようなデータがたくさん出てくるとき: 例えば、複数の請求先データ(宛名、金額、期限)をセットで扱いたいときなどです。
  2. 複雑な計算を隠したいとき: 長い計算式をクラスの中に閉じ込めておけば、使うときは .Calculate と書くだけで済むようになります。
  3. Excelのイベントを高度に制御したいとき: 複数のボタンに同じ動きをさせたいときなどにクラスが真価を発揮します。

無理に最初から全てをクラスにする必要はありません。まずは「データの塊を一つにまとめる箱」として使ってみることから始めましょう。

7. クラスモジュールを整理するコツ

7. クラスモジュールを整理するコツ
7. クラスモジュールを整理するコツ

クラスモジュールを使いこなすと、VBAプロジェクトの中が整理され、管理がとても楽になります。プロジェクトをきれいに保つためのコツをいくつかご紹介します。

  • 名前の付け方を工夫する: クラス名には cls(クラスの略)を先頭に付けると、標準モジュールと区別しやすくなります(例:clsDatabase)。
  • 一クラス一責任: 「社員クラス」の中に「売上集計の処理」まで詰め込まないようにしましょう。一つのクラスには、一つの役割だけを持たせるのが美しい設計のコツです。
  • コメントを丁寧に書く: クラスは一度作ると中身を見なくなります。そのため、後で自分が困らないように「このプロパティは何を保存するものか」を日本語で書き残しておきましょう。

8. 実行結果を確認してみよう

8. 実行結果を確認してみよう
8. 実行結果を確認してみよう

実際にクラスを使ったプログラムを動かすと、どのような結果になるか見てみましょう。先ほどの UseClass を実行すると、以下のようなメッセージボックスが表示されます。


(メッセージボックスの出力結果)
こんにちは、私は 田中太郎 です!

一見、標準モジュールだけで書いたときと同じ結果に見えますが、内部では「田中太郎」というデータを持った個体が独立して動いています。もし、もう一人「鈴木花子」さんを New で追加しても、太郎さんの名前が書き換わることはありません。これがクラスモジュールを使うことで得られる「独立性」の素晴らしさです。

9. クラスモジュール習得への道

9. クラスモジュール習得への道
9. クラスモジュール習得への道

クラスモジュールは、VBAの中でも「中級者」への入り口と言われる難しい分野です。一度で全てを理解しようとしなくて大丈夫です。まずは「変数がたくさんあって管理が大変だな」と感じたときに、この記事を思い出してください。

何度も「設計図を作って、実物を取り出す」という作業を繰り返すうちに、パズルのピースがはまるように理解が深まるはずです。Excel VBAの世界を広げる強力な武器として、少しずつ触れていってみてくださいね。

まとめ

まとめ
まとめ

クラスモジュールの本質を振り返る

VBAにおけるクラスモジュールは、単なるコードの書き場所ではなく、「オブジェクト指向プログラミング」を実現するための重要な仕組みです。この記事では、クラスモジュールを「設計図」として捉え、そこから「インスタンス」という実体を作り出す流れを解説しました。これにより、プログラムの中で現実世界の概念をそのまま再現できるようになります。 特に、プロパティとメソッドという考え方は、VBAの理解を一段深めるポイントです。プロパティはデータ、メソッドは動作という役割を持ち、これらを組み合わせることで、より直感的で読みやすいコードを書くことが可能になります。

VBAクラスモジュールを使うメリットの再確認

クラスモジュールを使うことで、プログラムの構造は大きく改善されます。まず、データと処理をひとまとめにできるため、コードの可読性が向上します。さらに、同じ設計図を使い回すことで再利用性が高まり、開発効率も向上します。これは業務効率化や自動化を目的としたExcel VBA開発において非常に重要な要素です。 また、カプセル化によって、外部からの不正なデータ操作を防ぐことができ、バグの発生を抑える効果もあります。初心者のうちは実感しにくいかもしれませんが、コードが長くなるほど、この恩恵は大きく感じられるようになります。

初心者がつまずきやすいポイントと対策

VBAのクラスモジュールで多くの人が混乱するのは、「設計図」と「実体」の違いです。クラスを作っただけでは動かず、必ずNewキーワードを使ってインスタンス化する必要があります。この流れをしっかり理解することが第一歩です。 また、プロパティとメソッドの役割が曖昧になりがちですが、「データか動作か」という視点で整理すると理解しやすくなります。最初は小さなクラスを作り、少しずつ慣れていくのが効果的です。

実務で役立つクラス設計の考え方

実務でVBAを活用する場合、クラスモジュールは「データ管理」に非常に強力です。例えば、顧客情報、社員情報、商品情報など、複数の属性を持つデータを扱う際に、クラスとしてまとめることで管理がしやすくなります。 また、「一クラス一責任」を意識することで、保守性の高いプログラムになります。ひとつのクラスに多くの役割を持たせすぎると、後から修正が難しくなるため注意が必要です。

サンプルプログラムで理解を深める

最後に、クラスモジュールの基本的な使い方をもう一度確認してみましょう。以下は、社員情報を扱うシンプルなVBAクラスの例です。


' クラスモジュール(clsEmployee)
Public Name As String
Public Age As Integer

Sub Introduce()
    MsgBox "名前:" & Name & vbCrLf & "年齢:" & Age
End Sub

このクラスを使う標準モジュールのコードは次のようになります。


Sub TestEmployee()
    Dim emp As New clsEmployee
    
    emp.Name = "佐藤一郎"
    emp.Age = 30
    
    emp.Introduce
End Sub

実行結果は以下の通りです。


名前:佐藤一郎
年齢:30

このように、クラスを使うことでデータと処理をひとまとめに扱えるため、コードが整理され、読みやすくなります。VBA初心者から中級者へステップアップするためには、この考え方をしっかり身につけることが重要です。

先生と生徒の振り返り会話

生徒
「クラスモジュールって難しいと思っていましたが、設計図と実体の関係が分かるとイメージしやすいですね。」

先生
「その通りです。まずは『型を作る』という考え方に慣れることが大切ですよ。」

生徒
「プロパティとメソッドも、データと動作で考えると整理しやすかったです。」

先生
「良い理解です。実務では、その二つをどう組み合わせるかがポイントになります。」

生徒
「クラスを使うとコードがスッキリする理由も分かってきました!」

先生
「最初はシンプルなクラスから始めて、少しずつ複雑な処理に応用していきましょう。VBAのスキルが一段上がりますよ。」

生徒
「はい、これからはデータをまとめるときにクラスを意識してみます!」

カテゴリの一覧へ
新着記事
New1
Excel VBA
Excel VBAのRangeとCellsの違いを完全解説!セルの取得と範囲操作の使い分け
New2
Office Scripts
Office Scriptsの基本!企業環境で安全にExcel自動化を使うための利用制限と管理者設定
New3
Office Scripts
Office Scriptsの基本!TypeScriptの型注釈を理解してExcel自動化を安全に書く方法
New4
Office Scripts
Office Scriptsの基本!Excel自動化で使うgetValues・setValues完全ガイド【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Excel VBA
VBAモジュールを安全にエクスポート・インポートする方法と注意点
No.5
Java&Spring記事人気No5
Excel VBA
ThisWorkbookに書くべき処理とは?VBAプロジェクトの正しい構成方法
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAのブレークポイント設定と使い方!初心者でも理解できるデバッグの基本
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法