Excel VBAのプロシージャとは?SubとFunctionの違いと基本の書き方を初心者向けに徹底解説
生徒
「Excel VBAを勉強していたら、SubとかFunctionとか出てきて混乱してしまいました……」
先生
「Excel VBAでは、処理のまとまりをプロシージャとして書きます。その代表がSubとFunctionです」
生徒
「名前は似ていますが、何が違うんですか?」
先生
「役割と使いどころが違います。今日はVBA初心者でも分かるように、基本から丁寧に整理していきましょう」
1. プロシージャとは何か
Excel VBAにおけるプロシージャとは、ひとまとまりの処理をまとめたものです。 現実世界で例えると、料理のレシピのような存在です。 「材料を切る」「焼く」「盛り付ける」といった手順を一つにまとめたものがプロシージャです。 VBAでは、このプロシージャを使って処理を整理し、分かりやすいプログラムを作ります。
2. Subプロシージャとは
Subは、処理を実行することが目的のプロシージャです。 Excelの操作、自動処理、メッセージ表示など、「何かをする」ために使います。 結果を返さず、実行するだけという点が大きな特徴です。
Sub HelloMessage()
MsgBox "こんにちは"
End Sub
こんにちは
3. Functionプロシージャとは
Functionは、計算や判定を行い、その結果を返すプロシージャです。 電卓のような役割を持ち、入力に対して答えを返します。 Subとの最大の違いは「戻り値」があることです。
Function AddNumber(a As Integer, b As Integer) As Integer
AddNumber = a + b
End Function
4. SubとFunctionの違いを整理する
SubとFunctionの違いを簡単にまとめると、 Subは作業担当、Functionは計算担当と考えると理解しやすくなります。 Subは「やること」、Functionは「答え」を提供します。 初心者のうちは、画面操作や処理はSub、計算や判断はFunctionと覚えると迷いにくくなります。
5. プロシージャ名の付け方の基本
プロシージャ名は、その中身が分かる名前を付けることが大切です。 英語が苦手でも問題ありません。 「何をする処理なのか」が自分で見て分かれば十分です。 これにより、後から見返したときに迷わなくなります。
6. 引数とは何か
引数とは、プロシージャに渡す情報のことです。 料理で例えると、材料にあたります。 同じ料理でも材料が変われば結果が変わるように、引数によって処理内容を変えられます。
Sub ShowName(userName As String)
MsgBox userName & "さん、こんにちは"
End Sub
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を呼び出す
実際のVBAでは、Subの中からFunctionを呼び出す場面が多くあります。 役割分担をすることで、コードが整理され、読みやすくなります。 初心者でも「分けて考える」癖をつけることが大切です。
Sub CheckAge()
Dim result As Boolean
result = IsAdult(25)
If result = True Then
MsgBox "成人です"
Else
MsgBox "未成年です"
End If
End Sub
成人です
9. プロシージャを分けるメリット
プロシージャを分けることで、プログラム全体が見やすくなります。 修正や追加もしやすくなり、エラーの原因も見つけやすくなります。 Excel VBAでは、小さな部品を組み合わせる意識がとても重要です。
10. 初心者が意識したい設計の考え方
最初から完璧な設計を目指す必要はありません。 「処理はSub」「計算はFunction」という基本を意識するだけで十分です。 Excel VBAのプロシージャ設計を理解することで、長く使えるコードが書けるようになります。