この記事で解決できる3つの疑問

どうやって使い分けたらいいの?
初心者向けの使い方を、コード付きで教えてほしい!
結論:Subは「処理を実行する命令」、Functionは「結果を返す関数」
Excel関数だけでは表現しきれない複雑な処理も、VBAならシンプルなコードで実現できます。
「複数条件を一度にチェックしたい」「条件によって表示や動作を変えたい」そんなとき、VBAの If ~ Then ~ Else
文は非常に強力です。



「VBAで『Sub』ってよく見るけど、Functionっていうのもあるんだよね…?何がどう違うのか、サッパリ分からないよ…!」
目次
Subとは? → 実行するだけで終わる「命令」
Sub(サブ)は、何らかの処理を実行して終わるものです。
Excelのマクロでよく使われる「ボタンを押したら動く処理」は、ほとんどSubです。
Sub メッセージ表示() MsgBox "こんにちは!" End Sub
Functionとは? → 結果(値)を返す「関数」
一方でFunctionは、処理結果を「値」として返すものです。
Excelでいう「=SUM(A1:A3)」のように、セルで使える「関数」として機能します。
Function 足し算(数1 As Integer, 数2 As Integer) As Integer 足し算 = 数1 + 数2 End Function
セルに =足し算(3,5)
と入力すれば「8」が返ってきます。
Subと違い、「値を返す」ことが大きな特徴です。
使い分けの基本ルール
目的 | 適切な構文 |
---|---|
処理だけ行いたい | Sub |
計算結果などの値を返したい | Function |
「ユーザーにメッセージを出す」「セルに色をつける」など → Sub
「合計値を返す」「フラグの真偽を返す」など → Function
実際のコード例で比較!
Sub あいさつ() MsgBox "おはようございます!" End Sub
これはボタンで起動して使うイメージ。値を返す必要がない処理。
Function 合計値(値1 As Double, 値2 As Double) As Double 合計値 = 値1 + 値2 End Function
これはセルで使う関数として定義されています。
結果をセルに返したいときは、Functionを選びましょう。
こんなときはSub、こんなときはFunction
ケース | 選ぶべき構文 |
---|---|
ユーザーに「完了しました」と通知する | Sub |
ボタンを押したらデータを整理する | Sub |
商品価格と数量から金額を計算して返す | Function |
入力値に応じてTrue/Falseを返したい | Function |



Subは「作業係」、Functionは「答えを出す係」って感じですね!
まとめ:迷ったら「結果を返すか?」を基準にしよう
- Sub:何か処理をさせる(ファイル保存・画面更新など)→ 値は返さない
- Function:結果を返す処理(計算・フラグ判定など)→ 値を返す
どちらも大切な構文ですが、目的によって適切に使い分けましょう。
初心者のうちは迷うかもしれませんが、「何をさせたいか?」を考えると自ずと答えが見えてきます。
関連記事リンク
- 【初心者向け】VBAの変数とは?Dimによる宣言方法を解説
- 【初心者向け】If文の使い方と注意点
- 【初心者向け】処理によってセルの色を変えるVBAの基本
コメント