Excel VBAの2つのプロシージャ(SubとFunction)の違いについて

2020年12月25日

Excel VBAには2つのプロシージャであるSubFunctionがあります。
(プロシージャとは処理のひとまとまりのこと)

2つのプロシージャの違いは以下の表のとおりで戻り値を返すかどうかが異なります。

プロシージャ値を渡す(引数)値を返す(戻り値)
Sub×
Function
SubとFunctionの違い


これらのプロシージャを呼び出すにはCallステートメントを使用します。

(例)
Sub Sample1()
Call Sample2()
End Sub

Sub Sample2()
MsgBox (“Sample2を実行しました")
End Sub


SubとFunction共通の話になりますが、値の渡し方として2種類あります。

値渡し参照渡しです。

引数指定方法指定の必要性
値渡しByValあり
参照渡しByRefなし(デフォルト)
値渡しと参照渡し

 

(例)Sub Sample1(ByVal a As String)