Excel 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列に表示されたことが確認できました!

 
サンプルコードの詳細は以下の記事にまとめていますので、こちらもご覧ください。
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の使い分け方
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。

 
						




 
	        		             
	        		             
	        		             
	        		             
	        		             
	        		             
	        		             
	        		            




コメントを残す