VBScriptでは、プロシージャを使用して処理をグループ化し、再利用可能なコードを作成することができます。
この記事では、VBScriptでプロシージャを効果的に使用する方法を解説します。
プロシージャの種類
プロシージャ(procedure)は、「手続き」の意味をもつ英単語でプログラム内の特定のタスクを実行するために使用される構造です。
プロシージャの種類は、次の通りです。
サブルーチンの作成
サブルーチン(Subroutine)は、一連の処理をまとめて実行するために使用されます
また、戻り値を返さず他の場所から呼び出せます。
'サブルーチンを定義
Sub SayHello()
MsgBox "Hello, World!"
End Sub
ファンクションの作成
ファンクション(Function)は、関数とも呼びます。
サブルーチンと同様に一連の処理をまとめて実行しますが、戻り値(結果を返す値)を返します。
戻り値を持つため、計算結果や処理結果を取得するために使用されます。
'ファンクションを定義
Function AddNumbers(a, b)
AddNumbers = a + b
End Function
プロシージャの呼び出し
定義したサブルーチンやファンクションは、他の場所から呼び出すことができます。
'サブルーチンを定義
Sub SayHello()
MsgBox "Hello, World!"
End Sub
'パラメータ付きサブルーチンを定義
Sub DisplayMessage(a, b)
MsgBox a & b
End Sub
'ファンクションを定義
Function AddNumbers(a, b)
AddNumbers = a + b
End Function
'サブルーチンの呼び出し
SayHello
'パラメータ付きサブルーチンの呼び出し
DisplayMessage "Welcome to ","VBScript!"
'ファンクションの呼び出し
MsgBox AddNumbers(5, 3)
パラメータの利用
サブルーチンやファンクションには、パラメータ(値)を渡すことができます。
この渡す値のことを「引数」と呼びます。
これにより、同じ処理を異なるデータに対して実行することができます。
Sub DisplayMessage(message)
MsgBox message
End Sub
Function MultiplyNumbers(x, y)
MultiplyNumbers = x * y
End Function
パラメータの種類
サブルーチンは、「値渡し」のみ可能です。
ファンクションは、「値渡し」「参照渡し」どちらでも可能です。
値渡し
値渡し(Pass by Value)は、関数やサブルーチンに引数として渡された変数の値のコピーが渡されます。
そのため、渡された変数の値が関数内で変更されても、元の変数には影響がありません。
渡す変数名の前に「ByVal」を付けます。
Sub DoubleValue(ByVal value)
value = value * 2
End Sub
Dim num
num = 10
DoubleValue num ' numの値が20になるが、元のnumには影響しない
MsgBox num ' 10が表示される
参照渡し
参照渡し(Pass by Reference)は、関数やサブルーチンに引数として渡された変数の参照(メモリ上のアドレス)が渡されます。
そのため、渡された変数の値が関数内で変更されると、元の変数の値も変更されます。
渡す変数名の前に「ByRef」を付けます。
また、VBScriptでは「ByVal」「ByRef」を指定せずに引数を渡すと、「ByRef」として扱われます。
Sub DoubleValue(ByRef value)
value = value * 2
End Sub
Dim num
num = 10
DoubleValue num ' numの値が20に変更される
MsgBox num ' 20が表示される
パラメータの型指定
VBScriptではパラメータのデータ型を指定することはできませんが、パラメータの値を利用する際にデータ型のチェックを行うことができます。
Function CheckEvenNumber(num)
If IsNumeric(num) Then
If num Mod 2 = 0 Then
CheckEvenNumber = True
Else
CheckEvenNumber = False
End If
Else
MsgBox "無効な入力です。数値を入力してください。"
CheckEvenNumber = False
End If
End Function
プロシージャの命名規則
プロシージャの名前を適切に命名することで、コードの可読性を向上させることができます。
一般的な命名規則は次の通りです。
- 英字で始める必要があります。
- 先頭と区切文字を大文字にします。
- 英字、数字、アンダースコア(_)を使用できます。
- 意味を明確にするために分かりやすく命名することが望ましいです。
'Helloを表示するプロシージャ
Sub SayHello()
MsgBox "Hello"
End Sub
まとめ
VBScriptでプロシージャを使うことで、コードを効果的に整理し、再利用可能なコードを作成することができます。
サブルーチンやファンクションを適切に定義し、パラメータを利用して柔軟な処理を行いましょう。