Procedimientos Function

Un procedimiento Function es una serie de sentencias BSL delimitadas por las sentencias Function y End Function. Un procedimiento Function es similar a un procedimiento Sub, pero también puede devolver un valor. Un procedimiento Function puede tomar argumentos (constantes, variables o expresiones que se le transfieren mediante un procedimiento de llamada). Si un procedimiento Function no tiene argumentos, su sentencia Function debe incluir un conjunto de paréntesis vacío. Una función devuelve un valor al asignar un valor a su nombre en una o más sentencias del procedimiento. El tipo de retorno de una función siempre es una variante.

En el siguiente ejemplo, la función Celsius calcula los grados Celsius a partir de los grados Fahrenheit. Cuando se llama a la función desde el subprocedimiento Sub ConvertTemp, se transfiere a la función una variable que contiene el valor del argumento. El resultado del cálculo se devuelve al procedimiento de llamada y se muestra en un cuadro de mensaje.

En el siguiente ejemplo se muestra el uso de los procedimientos Function:

Ejemplo 1:

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

Ejemplo 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()

Ejemplo 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()