技術情報
サブルーチンと関数
関数は戻値を返しますが、サブルーチンは戻値を返さないという点を除いては、サブルーチンと関数は同じようにコードを記述し、同じように使用することができます。
また、サブルーチンはオブジェクトのイベント処理にも用いられます。

サブルーチン
サブルーチンの基本構造は、
"ステートメント" Sub "サブルーチン名"(引数,...)
  ~
End Sub
となります。
引数が必要でなければ、省略します。
引数が必要であれば、必要な分だけカンマ区切で指定します。

"ステートメント"には、"Private"または、"Public"を指定します。
省略した場合には、"Public"と見なされます。
  • Private
  • 宣言されているモジュール内からのみ呼出が可能なサブルーチンとなります。
  • Public
  • プロジェクト内(ワークブック内)のすべてのモジュールから呼出可能なサブルーチンとなります。

"サブルーチン名"は、自由な名前をつけることができます。
但し、システムで使用されている単語(If、Publicなどの予約語)は使用できません。
関数
関数の基本構造は、
"ステートメント" Function "関数名"(引数,...) As "戻値データ型"
  ~
  "関数名" = "戻値"
End Function
となります。
引数が必要でなければ、省略します。
引数が必要であれば、必要な分だけカンマ区切で指定します。

"ステートメント"には、"Private"または、"Public"を指定します。
省略した場合には、"Public"と見なされます。
  • Private
  • 宣言されているモジュール内からのみ呼出が可能な関数となります。
  • Public
  • プロジェクト内(ワークブック内)のすべてのモジュールから呼出可能な関数となります。

"関数名"は、自由な名前をつけることができます。
但し、システムで使用されている単語(If、Publicなどの予約語)は使用できません。

"戻値のデータ型"は、"Integer", "Boolean", "String"など関数が戻値として返す値のデータ型を指定します。
引数の渡し方
サブルーチンや関数に引数を渡す場合には、参照渡し値渡しの2とおりがあります。

参照渡しは、呼出先のサブルーチンや関数内でその引数の値が変更された場合、処理が呼出元に戻ってきても変更された値が有効になります。
特に指定しない限りは、参照渡しとなります。

値渡しは、呼出先のサブルーチンや関数内へその引数の値のコピーが渡されます。呼出先のサブルーチンや関数内で変更された値はそのサブルーチンや関数内でのみ有効となり、処理が呼出元に戻ってきても変更された値は無効となり、呼出前の値が有効となります。
値渡しは、ByValキーワードを引数の前につけて、明示的に宣言しなければなりません。