カテゴリ: 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
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法