VBAのFunctionとSubの違いは何?使い分け方まとめ!

Excel VBAでFunctionかSubで定義してマクロを使いたいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAのFunctionとSubの違いがわからない
・VBAのFunctionとSubの使い分け方がわからない

ですよね。

今回はそんなお悩みを解決する

・VBAのFunctionとSubの違い
・VBAのFunctionとSubの使い分け方

についてまとめます!

VBAをまとめる方法は2種類

VBAをまとめる方法は2種類あります。それはFunctionとSubで、それぞれ、Functionプロシージャ、Subプロシージャと呼んでいます。

プロシージャとはVBAの機能の最小単位を意味します。

Functionプロシージャ、Subプロシージャの書式と詳細については以下の通りです。

書式 説明
Function <プロシージャ名>(<受け取る値>) As <返すデータ型>
・・・
End Function
命令の実行結果を呼び出し元に返します。
ワークシート関数として使用可能です。
Sub <プロシージャ名>(<受け取る値>)
・・・
End Sub
命令を実行します。戻り値はありません。またワークシート関数としては使用できません。

FunctionとSubの違い

次にFunctionとSubの違いについて説明をします。

FunctionプロシージャとSubプロシージャの違いは、

・戻り値があるか
・ワークシート関数として使えるか
・マクロから実行が可能か

の3点になります。
それぞれの違いをみてみましょう。

戻り値があるか

Functionプロシージャは戻り値がありますが、Subプロシージャは戻り値がありません。

ワークシート関数として使えるか

FunctionプロシージャはVBAの関数の他にSUM関数のようにワークシート関数としても使用できます。一方でSubプロシージャはワークシート関数としては使えません。

マクロから実行が可能か

Subプロシージャはマクロとして登録され、マクロから実行が可能になります。

Functionプロシージャはマクロからの実行やボタンのマクロ登録ができませんが、Subプロシージャはマクロからの実行やボタンのマクロ登録ができます。

FunctionとSubを使い分ける基準

FunctionプロシージャとSubプロシージャを使い分ける基準について説明をします。

Functionはオリジナルの計算処理をまとめる時に使用

Functionはオリジナルの計算処理をまとめる時に選択します。
例えばころころ変わる税率を計算したり、業務独自の計算を処理したいときなどです。
以下サンプルコードです。

Function ADDNUM(rCell As Range) As String
  ADDNUM = rCell.Value + 50
End Function

引数の値に50を加算した結果が返るFunctionプロシージャになります。
適当な数値をA列に入力し、

「=ADDNUM(A1)」をB2のセルへ挿入し、5行目までドラッグすると、

=ADDNUM(A1)

A列の数値に50が加算された結果が隣のB列に表示されたことが確認できました!

タカヒロ
タカヒロ
Functionは計算に特化したプロシージャということですね。ワークシート関数として使える点がうれしいですね。
サンプルコードの詳細は以下の記事にまとめていますので、こちらもご覧ください。

Subはマクロから実行したい時に使用

Subプロシージャはマクロから実行したい時に使用します。

マクロは単体、もしくは複数の機能をまとめたものなので、Functionプロシージャの計算結果から表データに反映したり、シートを作成したりすることが想定されます。

サンプルコードは上記FunctionプロシージャをSubプロシージャから呼び出し、セルA1の値をADDNUM関数に指定し、+50の結果をデバッグ出力するものです。

Sub ADDNUMを呼び出す()
  Debug.Print ADDNUM(Range("A1"))
End Sub

アクティブシートのA1に適当な数字をいれて実行すると、

+50の結果が出力されました。

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAのFunctionとSubの違い
・VBAのFunctionとSubの使い分け方

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です