Excel VBAのチップスです。
Subプロシージャ,Functionプロシージャを定義するときは、引数を受け取らないものでも、プロシージャの最後に必ず括弧()をつけます。
Sub Keisan()
・・・
・・・
End Sub
Subプロシージャを呼び出すときは、通常括弧はつけません。引数は、下の例では100,0.08となります。呼び出されたプロシージャKeisanの変数Ataiに100が、Zeirituに0.08が渡されます。
例1
Sub Test1()
Keisan 100, 0.08 'SUBプロシージャKeisanの呼び出し
End Sub
Sub Keisan(Atai, Zeiritu)
Range("A1").Value = Atai * 100
Range("B1").Value = Range("A1").Value * Zeiritu
End Sub
結果
例2
プロシージャを呼び出すときに、Callを使用することもできます。この場合は、引数を括弧で囲む必要があります。
Sub Test2()
Hantei 80, 60
Call Hantei(50, 60)
End Sub
Sub Hantei(tensu As Integer, hanteichi As Integer)
If tensu >= 60 Then
MsgBox "おめでとう。合格です!"
Else
MsgBox "残念でした。"
End If
End Sub
結果
Functionプロシージャでは、戻り値を利用する場合はプロシージャ名を変数に代入して、引数を括弧で囲みます。戻り値を利用しない場合は括弧で囲む必要はありません。ちなみに、上のSub KeisanをFunctionに変えても動作します。
戻り値を利用する例。下の例では、Keisanに格納された値が戻り値となります。
Sub Test2()
Total = Keisan(100, 0.08) ’プロシージャKeisanをTotalに代入、
Range("C1").Value = Total ’引数は括弧で囲む
End Sub
Function Keisan(Atai, Zeiritu)
Range("A1").Value = Atai * 100
Range("B1").Value = Range("A1").Value * Zeiritu
Keisan = Atai * 100 + Atai * 100 * Zeiritu
End Function
結果
引数のデータ型は指定しない限りバリアント型となります。プロシージャの定義部で指定すると(As type)データ型を指定できます。上記のサンプル例でしたら、
Function Keisan(Atai, Zeiritu) を
Function Keisan(Atai As Long, Zeiritu As Single)
のように指定します。