カテゴリ: Excel VBA 更新日: 2026/01/16

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の世界を広げる強力な武器として、少しずつ触れていってみてくださいね。

カテゴリの一覧へ
新着記事
New1
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
New2
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New3
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New4
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.2
Java&Spring記事人気No2
Excel VBA
VBAクラスモジュールとは?メリットと基本的な使い方を初心者向けに解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
No.5
Java&Spring記事人気No5
Office Scripts
Office Scriptsの基本!Excel自動化で使うインターフェイスとスクリプト設計の考え方
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsの基本!Excel自動化で学ぶエラーを防ぐ型チェックの活用方法
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAプロジェクトを整理する方法!保守しやすいフォルダ・命名規則まとめ
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方