MENU

【初心者向け】VBAの「Sub」と「Function」の違いとは?使い分けをわかりやすく解説!

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

A子さん

SubとFunctionって、何が違うの?
どうやって使い分けたらいいの?
初心者向けの使い方を、コード付きで教えてほしい!

結論:Subは「処理を実行する命令」、Functionは「結果を返す関数」

Excel関数だけでは表現しきれない複雑な処理も、VBAならシンプルなコードで実現できます。
「複数条件を一度にチェックしたい」「条件によって表示や動作を変えたい」そんなとき、VBAの If ~ Then ~ Else 文は非常に強力です。

A子さん

「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
A子さん

Subは「作業係」、Functionは「答えを出す係」って感じですね!

まとめ:迷ったら「結果を返すか?」を基準にしよう

  • Sub:何か処理をさせる(ファイル保存・画面更新など)→ 値は返さない
  • Function:結果を返す処理(計算・フラグ判定など)→ 値を返す

どちらも大切な構文ですが、目的によって適切に使い分けましょう。
初心者のうちは迷うかもしれませんが、「何をさせたいか?」を考えると自ずと答えが見えてきます。

関連記事リンク

  • 【初心者向け】VBAの変数とは?Dimによる宣言方法を解説
  • 【初心者向け】If文の使い方と注意点
  • 【初心者向け】処理によってセルの色を変えるVBAの基本
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次