プロシージャに対するデータの入力と出力

各データは、引数を使用してプロシージャに渡されます。引数は、プロシージャに渡すデータのプレースホルダとして機能します。引数には任意の有効な変数名を指定できます。Sub文またはFunction文を使用してプロシージャを作成する場合は、プロシージャの名前の後にカッコを付ける必要があります。引数はカッコ内にカンマ区切りで配置します。たとえば、次の例のfDegreesは、変換のためにCelsius関数に渡される値のプレースホルダです。

次の例は、プロシージャからデータを取得する方法を示しています:

例1:

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

プロシージャからデータを取得するには、Functionを使用する必要があります。Functionプロシージャは値を戻すことができ、Subプロシージャは値を戻せません。

例2:

Function Celsius(fDegrees)
        Celsius = (fDegrees - 32) * 5 / 9   ' Converts Fahrenheit to Celsius.
End Function

Sub ConvertTemp()
        Dim temp, celsiusTemp
        temp = 70
        celsiusTemp = Celsius(temp)   ' Calls the function and stores the result.
'celsiusTemp has the converted temperature.
End Sub
Call ConvertTemp()

例3:

Function Add(a, b)
    Add = a + b    ' Returns the sum of a and b.
End Function

Sub ShowAddition()
    Dim result
    result = Add(5, 10)    ' Calls the function and stores the result.
    'Here result is 15
End Sub
Call ShowAddition()

例4:

Function GetGreeting(name, timeOfDay)
    If timeOfDay = "Morning" Then
        GetGreeting = "Good morning, " & name & "!"
    ElseIf timeOfDay = "Afternoon" Then
        GetGreeting = "Good afternoon, " & name & "!"
    ElseIf timeOfDay = "Evening" Then
        GetGreeting = "Good evening, " & name & "!"
    Else
        GetGreeting = "Hello, " & name & "!"
    End If
End Function

Sub ShowGreeting()
    Dim name, timeOfDay, greeting
    name = "MyName"
    timeOfDay = "Morning"
    greeting = GetGreeting(name, timeOfDay)   
    'Print greeting here
End Sub
Call ShowGreeting()