ホーム > カテゴリ > Excel・VBA >

Sub/Functionプロシージャ(手続き/関数)[ExcelのVBA]

Subプロシージャ/Functionプロシージャはエクセルの関数のようなものです。これらのプロシージャは「ユーザーフォーム」や「シート」固有のものであれば「ユーザーフォーム/シートのコード」に記述します。再利用可能な汎用的なプロシージャは「標準モジュール」に記述します。

Wikipediaで補足:プロシージャ

Subプロシージャ

Subプロシージャは「手続き」とも呼ばれ戻り値を返しません

<Subプロシージャの書式>
 Sub プロシージャ名([引数1,引数2,...])
  処理を記述
 End Sub

※[]は省略する事が出来ます。また、Subの前に「PrivateまたはPublic」を記述できます。省略した場合は「Private」となります。

※「Private/Public」の有効範囲(スコープ)は「変数/定数/リテラル/データ型/有効範囲」をご覧ください。

Subプロシージャの使用例1

引数なしのパターンです。

Subプロシージャの使用例2

引数が一つあるパターンです。

Subプロシージャの使用例3

引数が二つあるパターンです。

Wikipediaで補足:戻り値

Functionプロシージャ

Functionプロシージャは「関数」とも呼ばれ戻り値を返します

<Functionプロシージャの書式>
 Functionプロシージャ名([引数1,引数2,...]) As データ型
  処理を記述
 End Function

※「As データ型」で戻り値のデータ型を定義します。

※[]は省略する事が出来ます。また、Functionの前に「PrivateまたはPublic」を記述できます。省略した場合は「Private」となります。

※「Private/Public」の有効範囲(スコープ)は「変数/定数/リテラル/データ型/有効範囲」をご覧ください。

Functionプロシージャの使用例

同名のプロシージャ名があるとエラーになりますのでプロシージャ名を変更してから確認して下さい。

値渡し/参照渡し(ByVal/ByRef)

各プロシージャは引数(ひきすう)を定義できます。引数を定義する際には引数の種類を「値渡しのByVal」または「参照渡しのByRef」の二つを選択できます。省略した場合は「ByRef」となります。

値渡し(ByVal)の使用例

ByValは「変数Aの値のみを渡している」ので結果は10となります。

参照渡し(ByRef)の使用例

ByRefは参照で「変数Aを渡している」ので結果は5となります。

※ByRefの場合は元の変数の値がプロシージャ内で変化するので注意が必要です。普段は「ByVal」を使いましょう。

デフォルト引数

引数の値を予め設定する事を「デフォルト引数」と呼びます。デフォルト引数は引数名の前に「Optional」を付加します。

次はデフォルト引数の使用例です。

※デフォルト引数にもByVal/ByRefを記述できますが、どちらを記述しても「ByVal」の結果となります。

配列を引数に渡す

引数に配列を渡す場合は次の例のように「Variant型」を使用します。

Exit Sub/Exit Function

Sub/Functionプロシージャのブロック内で「Exit Sub/Exit Function」を記述するとその行でプロシージャの処理が終了します。

次は「Exit Sub」の使用例です。

※Functionプロシージャには「Exit Function」を使用します。

Sub/Functionプロシージャの呼び出し

Sub/Functionプロシージャの呼び出し方は引数によって2~3種類あります。

次は呼び出し方の一覧となります。(※赤文字はエラー)

※引数が2つ以上ある場合は「CCC(1,2)」のような形式で呼び出す事は出来ないようです。但し、この例はSubプロシージャです。Functionプロシージャの場合は「A = CCC(1,2)」のように戻り値を変数に設定するようにすれば呼び出す事が可能です。

メモ

各プロシージャは「挿入」メニューの「プロシージャ」から簡単に追加する事が出来ます。

※Propertyプロシージャは基本的に「クラスモジュール」で定義するプロシージャです。

Visual Basicの基礎

変数/定数/リテラル/データ型/有効範囲
配列/動的配列/構造体/列挙型/エスケープシーケンス
算術演算子/比較演算子/データの型変換
制御構造(If/For/Select/While/Do)
Sub/Functionプロシージャ(手続き/関数)
クラスの作成と使い方
ファイルの操作
エラートラップ
基本のまとめ(上級者用)

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年06月17日 最終更新日:2015年07月06日
記事NO:01050