Une procédure Function est une série d'instructions BSL encadrées par les instructions Function et End Function. Elle est semblable à une procédure Sub mais peut également renvoyer une valeur. Une procédure Function peut accepter des arguments (constantes, variables ou expressions qui lui sont transmises par une procédure d'appel). Si une procédure Function n'a pas d'argument, son instruction Function doit inclure un ensemble de parenthèses vides. Une fonction renvoie une valeur en affectant une valeur à son nom dans une ou plusieurs instructions de la procédure. Le type de valeur renvoyé est toujours une variante.
Dans l'exemple suivant, la fonction Celsius calcule les degrés Celsius à partir des degrés Fahrenheit. Lorsque la fonction est appelée à partir de la procédure Sub ConvertTemp, une variable contenant la valeur de l'argument est transmise à la fonction. Le résultat du calcul est renvoyé à la procédure d'appel et affiché dans une zone de message.
Les exemples suivants illustrent l'utilisation des procédures Function :
Exemple 1 :
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
valCelcius = Celsius(90)
Exemple 2 :
Function AddNumbers(a, b)
AddNumbers = a + b ' The function returns the sum of a and b.
End Function
Sub ShowAddition()
Dim result
result = AddNumbers(5, 10) ' Calls the function and stores the result.
'Here result is 15
End Sub
Call ShowAddition()
Exemple 3 :
Function CalculateRectangleArea(length, width)
If length <= 0 Or width <= 0 Then
CalculateRectangleArea = "Invalid dimensions" ' Returns an error message for invalid dimensions.
Else
CalculateRectangleArea = length * width ' Returns the area of the rectangle.
End If
End Function
Sub ShowRectangleArea()
Dim length, width, area
length = 4
width = 3
area = CalculateRectangleArea(length, width) ' Calls the function and stores the result.
'The area of the rectangle is 12
End Sub
Call ShowRectangleArea()