1.プロシージャの説明
プログラムのコードを目的別に分割することによって、プログラミング作業を簡単にすることができる。Visual
Basic では、コードを "プロシージャ" と呼ばれる単位に分割して、アプリケーションを構成する。
プロシージャは、何度も実行する処理や、共有される処理をまとめるために使うことができる。たとえば、頻繁に実行する計算処理、テキストやコントロールの操作、データベースの操作などを、プロシージャにするなど。
プロシージャを使ったプログラミングには、次の
2 つの主な利点がある。
プロシージャを使うと、プログラムを個別の論理ユニットに分割することができる。プロシージャごとにデバッグする方が、プロシージャに分割されていないプログラム全体をデバッグするよりも簡単である。
あるプログラムで使用しているプロシージャは、通常、ほとんど変更することなく、ほかのプログラムで利用できる。
Visual Basic で使うプロシージャには、次のものがある。
Sub プロシージャは値を返さない。
Function プロシージャは値を返す。
2.Sub プロシージャ
Sub プロシージャは、イベントの発生に応じて実行されるコードのブロックである。モジュール内のコードを
Sub プロシージャに分割することによって、アプリケーション内のコードの検索または変更が容易になる。
Sub プロシージャの構文は次のとおり。
[Private|Public][Static]Sub procedurename (arguments)
statements
End Sub
Sub プロシージャが呼び出されると、Sub と
End Sub の間の "ステートメント" が実行される。Sub
プロシージャは、標準モジュール、クラス モジュール、およびフォーム
モジュールに記述できる。Sub プロシージャは、どのモジュールで記述しても、特に指定しない限り
Public であり、アプリケーションのどこからでも呼び出すことができる。
プロシージャの "引数" は、変数宣言と同様に、呼び出し側のプロシージャから渡される値を宣言する。
Sub プロシージャには、"ジェネラル
プロシージャ" と "イベント
プロシージャ" の 2 種類がある。
(1)ジェネラル プロシージャ
ジェネラル プロシージャは、アプリケーションで実行する、特定の処理を指定する。定義したジェネラル
プロシージャは、アプリケーションから明示的に呼び出す必要がある。これに対し、イベント
プロシージャは、ユーザーの操作やシステムによってイベントが発生したときに呼び出される。
ジェネラル プロシージャは、主に共通コードを記述するために使う。複数のイベント
プロシージャで同じような処理が必要となる場合、共通のステートメントを
1 つのジェネラル プロシージャにまとめて記述し、それをイベント
プロシージャから呼び出すことができる。このようにすると、同じコードを重複して記述する必要がなくなり、アプリケーションも保守しやすくなる。
(2)イベント プロシージャ
Visual Basic では、オブジェクトがイベントの発生を認識すると、そのイベントに対応する名前を持つイベント
プロシージャが自動的に呼び出される。オブジェクトと呼び出されるイベント
プロシージャの関係は名前によって決まり、この名前によって、イベント
プロシージャはフォームまたはコントロールに結び付けられる。
コントロールのイベント プロシージャの名前は、コントロールに付けられた名前
(Name プロパティ ([オブジェクト名]) で指定した名前)
とイベント名を、アンダースコア (_)
でつないだものになる。たとえば、MyButton
という名前のコマンド ボタンがクリックされたときに呼び出されるイベント
プロシージャの名前は、MyButton_Click になる。
フォームのイベント プロシージャは、文字列
"Form" とイベント名をアンダースコアでつないだものになります。フォームがクリックされたときに呼び出されるイベント
プロシージャの名前は、Form_Click になる。コントロールと同様にフォームにも固有の名前があるが、イベント
プロシージャの名前には使わない。
イベント プロシージャの構文は、次のとおり。
コントロールのイベント プロシージャ フォームのイベント
プロシージャ
Private Sub controlname_eventname (arguments )
statements
End Sub
Private Sub Form_eventname (arguments)
statements
End Sub
イベント プロシージャはコード エディタ
ウィンドウに最初から入力することもできるが、Visual
Basic で提供されているプロシージャのテンプレートを利用する方が簡単である。コード
エディタ ウィンドウの [オブジェクト] ボックスでオブジェクトの名前を選択し、次に
[プロシージャ] ボックスでイベント名を選択すると、そのイベント
プロシージャのテンプレートが自動的に入力される。このようにすると、そのプロシージャの正しい名前が自動的に付けられる。
コントロールのイベント プロシージャを記述する前に、そのコントロールの名前を設定するようにすること。コントロールのイベント
プロシージャを記述した後でコントロールの名前を変更した場合、コントロールの新しい名前に合わせプロシージャの名前も変更する必要がある。イベント
プロシージャ名の中のコントロール名が異なっていると、Visual
Basic はコントロールとイベント プロシージャを対応させることができなくなる。コントロール名に対応していないプロシージャは、ジェネラル
プロシージャになる。
3.Function プロシージャ
Visual Basic には、Sqr、Cos、Chr などの組み込み関数があるが、ユーザー定義の関数を作成することもできる。関数を作成するには、Function
ステートメントを使って Function プロシージャを記述する。
Function プロシージャの構文は、次のとおり。
[Private|Public][Static]Function procedurename (arguments) [As
type]
statements
End Function
Sub プロシージャと同様に、Function
プロシージャも 1 つの独立したプロシージャで、引数を持つことができ、一連のステートメントを実行し、引数の値を変更することができる。Sub
プロシージャと異なるのは、Function
プロシージャは、呼び出し側のプロシージャに値を返すことである。次の
3 つの点が、Sub プロシージャと異なる。
通常、Function プロシージャは、ステートメントや式の右辺にプロシージャ名と引数を指定して、returnvalue
= function() のように呼び出す。
Function プロシージャは、変数と同様にデータ型を持つ。このデータ型は、Function
プロシージャが返す値のデータ型を表わす。Function
プロシージャのデータ型の指定を省略した場合 (As
節を指定しなかった場合) は、バリアント型 (Variant)
になる。
Function プロシージャでは、プロシージャ内で
"プロシージャ名" と同名の変数に値を代入することによって、値を返す。Function
プロシージャが返す値は、プロシージャを呼び出す式の中で、値として使うことができる。
次の例は、直角三角形の直角をはさむ 2 辺の長さを引数として受け取り、斜辺の長さを返す
Function プロシージャである。
Function Hypotenuse(A As Integer, B As Integer) _
As String
Hypotenuse = Sqr(A ^ 2 + B ^ 2)
End Function
Function プロシージャを呼び出す方法は、Visual
Basic の組み込み関数を呼び出す方法と同じ。
Label1.Caption = Hypotenuse(CInt(Text1.Text), _
CInt(Text2.Text))
strX = Hypotenuse(Width, Height)
[MSDNより引用]