エクセルVBA関数とサブの間の差は、サブができないが関数が値を返すことができるということです。関数とサブルーチンは、プログラムサイズが増大すると非常に便利になります。

機能

あなたはエクセルVBAが結果を返すタスクを実行したい場合は、機能を使用することができます。 (Visual Basicエディターで、[挿入、標準モジュール]をクリックします)モジュールに関数を置きます。たとえば、名前エリアと機能。

Function Area(x As Double, y As Double) As Double

Area = x  y

End Function

説明:この関数は、2つの(タイプダブルの)引数と戻り値の型(タイプダブルのも同様の後の部分)を持っています。あなたは(ここでyはx)を返すようにしたいつながるかを示すために、あなたのコード内の関数(エリア)の名前を使用することができます。

あなたは今、単純に関数の名前を使用して、各引数の値を与えることによって、あなたのコード内のどこかから(つまり関数を呼び出す)この関数を参照することができます。

ワークシート上の/ VBAの作成・マクロ#コマンドボタンを[コマンドボタン] `と次のコード行を追加します:`リンクを置き

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

説明:あなたは「キャッチ」あなたのコードでは、この値に持っているので、関数が値を返します。あなたはこのために別の変数(z)を使用することができます。 (必要に応じ)次に、あなたはこの変数に別の値を追加することができます。最後に、メッセージボックスを使用して値を表示します。

あなたはシート上のコマンドボタンをクリックすると、結果:

Excel VBA Function Result

サブ

あなたはExcelのVBAは、いくつかのアクションを実行したい場合は、サブを使用することができます。 (Visual Basicエディターで、[挿入、標準モジュール]をクリックします)モジュールにサブを置きます。

たとえば、名前エリアとサブ。

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

説明:このサブは(タイプダブルの)二つの引数を持っています。これは、戻り値の型を持っていません!あなたは、単にサブの名前を使用して、各引数の値を与えることによって、どこかあなたのコード内からこのサブ(サブを呼び出す)を参照することができます。

ワークシート上の/ VBAの作成・マクロ#コマンドボタンを[コマンドボタン] `と次のコード行を追加します:`リンクを置き

Area 3, 5

あなたはシート上のコマンドボタンをクリックすると、結果:

Excel VBA Sub Result

あなたは機能とサブの違いを見ることができますか?関数は、我々は、この結果に値2を添加し、最終結果を表示値15を戻しました。我々は、サブと呼ばれるとき、私たちは、サブが値を返すことができないため、結果(15)の上にこれ以上のコントロールがありませんでした!