カテゴリ: Excel VBA 更新日: 2026/02/21

Excel VBAのプロシージャとは?SubとFunctionの違いと基本の書き方を初心者向けに徹底解説

Excel VBAのプロシージャとは?Sub/Functionの違いと基本の書き方を徹底解説
Excel VBAのプロシージャとは?Sub/Functionの違いと基本の書き方を徹底解説

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

生徒

「Excel VBAを勉強していたら、SubとかFunctionとか出てきて混乱してしまいました……」

先生

「Excel VBAでは、処理のまとまりをプロシージャとして書きます。その代表がSubとFunctionです」

生徒

「名前は似ていますが、何が違うんですか?」

先生

「役割と使いどころが違います。今日はVBA初心者でも分かるように、基本から丁寧に整理していきましょう」

1. プロシージャとは何か

1. プロシージャとは何か
1. プロシージャとは何か

Excel VBAにおけるプロシージャとは、ひとまとまりの処理をまとめたものです。 現実世界で例えると、料理のレシピのような存在です。 「材料を切る」「焼く」「盛り付ける」といった手順を一つにまとめたものがプロシージャです。 VBAでは、このプロシージャを使って処理を整理し、分かりやすいプログラムを作ります。

2. Subプロシージャとは

2. Subプロシージャとは
2. Subプロシージャとは

Subは、処理を実行することが目的のプロシージャです。 Excelの操作、自動処理、メッセージ表示など、「何かをする」ために使います。 結果を返さず、実行するだけという点が大きな特徴です。


Sub HelloMessage()
    MsgBox "こんにちは"
End Sub

こんにちは

3. Functionプロシージャとは

3. Functionプロシージャとは
3. Functionプロシージャとは

Functionは、計算や判定を行い、その結果を返すプロシージャです。 電卓のような役割を持ち、入力に対して答えを返します。 Subとの最大の違いは「戻り値」があることです。


Function AddNumber(a As Integer, b As Integer) As Integer
    AddNumber = a + b
End Function

4. SubとFunctionの違いを整理する

4. SubとFunctionの違いを整理する
4. SubとFunctionの違いを整理する

SubとFunctionの違いを簡単にまとめると、 Subは作業担当、Functionは計算担当と考えると理解しやすくなります。 Subは「やること」、Functionは「答え」を提供します。 初心者のうちは、画面操作や処理はSub、計算や判断はFunctionと覚えると迷いにくくなります。

5. プロシージャ名の付け方の基本

5. プロシージャ名の付け方の基本
5. プロシージャ名の付け方の基本

プロシージャ名は、その中身が分かる名前を付けることが大切です。 英語が苦手でも問題ありません。 「何をする処理なのか」が自分で見て分かれば十分です。 これにより、後から見返したときに迷わなくなります。

6. 引数とは何か

6. 引数とは何か
6. 引数とは何か

引数とは、プロシージャに渡す情報のことです。 料理で例えると、材料にあたります。 同じ料理でも材料が変われば結果が変わるように、引数によって処理内容を変えられます。


Sub ShowName(userName As String)
    MsgBox userName & "さん、こんにちは"
End Sub

7. Functionの戻り値の考え方

7. Functionの戻り値の考え方
7. Functionの戻り値の考え方

戻り値とは、Functionが計算した結果です。 Function名に代入することで、その値を返します。 最初は少し不思議に感じますが、「結果を書き込む箱」と考えると理解しやすくなります。


Function IsAdult(age As Integer) As Boolean
    If age >= 20 Then
        IsAdult = True
    Else
        IsAdult = False
    End If
End Function

8. SubからFunctionを呼び出す

8. SubからFunctionを呼び出す
8. SubからFunctionを呼び出す

実際のVBAでは、Subの中からFunctionを呼び出す場面が多くあります。 役割分担をすることで、コードが整理され、読みやすくなります。 初心者でも「分けて考える」癖をつけることが大切です。


Sub CheckAge()
    Dim result As Boolean
    result = IsAdult(25)

    If result = True Then
        MsgBox "成人です"
    Else
        MsgBox "未成年です"
    End If
End Sub

成人です

9. プロシージャを分けるメリット

9. プロシージャを分けるメリット
9. プロシージャを分けるメリット

プロシージャを分けることで、プログラム全体が見やすくなります。 修正や追加もしやすくなり、エラーの原因も見つけやすくなります。 Excel VBAでは、小さな部品を組み合わせる意識がとても重要です。

10. 初心者が意識したい設計の考え方

10. 初心者が意識したい設計の考え方
10. 初心者が意識したい設計の考え方

最初から完璧な設計を目指す必要はありません。 「処理はSub」「計算はFunction」という基本を意識するだけで十分です。 Excel VBAのプロシージャ設計を理解することで、長く使えるコードが書けるようになります。

カテゴリの一覧へ
新着記事
New1
Excel VBA
Excel VBAで業務自動化!初心者でもわかる定型作業の自動化例
New2
Excel VBA
VBAの基本構造を理解しよう!モジュール・プロシージャ・関数の役割まとめ
New3
Office Scripts
Office Scriptsで大量シートを効率管理!Excelワークブック最適構造と自動化テクニック
New4
Excel VBA
Excel VBAが今でも使われ続ける理由とは?現場で評価されるポイントを徹底解説
人気記事
No.1
Java&Spring記事人気No1
Office Scripts
Office Scriptsで別ブックを開いてデータ取得する方法|OneDrive・SharePoint連携でExcel自動化
No.2
Java&Spring記事人気No2
Excel VBA
Excel VBA参照設定エラー「参照が見つかりません」を完全解説!初心者でも原因と対処法がわかる
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAは今後なくなる?将来性と企業での活用状況を詳しく解説
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.6
Java&Spring記事人気No6
Excel VBA
VBAのコメントの書き方を完全ガイド!初心者でもわかる説明文の付け方
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAで列の追加・行の削除を自動化!InsertとDeleteの使い方を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド