Llamar a procedimientos Sub y Function

Microsoft VBA

Llamar a procedimientos Sub y Function

   

Para efectuar una llamada a un procedimiento Sub desde otro procedimiento, escriba el nombre del procedimiento e incluya valores para todos los argumentos requeridos. No es necesaria una instrucción Call, pero si la utiliza, los argumentos deben aparecer encerrados entre paréntesis.

Se puede utilizar un procedimiento Sub para organizar otros procedimientos de forma que sean más fáciles de entender y depurar. En el siguiente ejemplo, el procedimiento Sub Principal efectúa una llamada al procedimiento Sub MultiBeep, pasando como argumento el valor 56. Después de que MultiBeep acaba su ejecución, el control vuelve a Principal y Principal llama al procedimiento Sub Mensaje. Mensaje presenta en pantalla un cuadro de mensaje; cuando el usuario hace clic en Aceptar, el control vuelve a Principal y Principal termina.

Sub Principal()
    MultiBeep 56
    Mensaje
End Sub

Sub MultiBeep(númbips)
    For contador = 1 To númbips
        Beep
    Next contador
End Sub

Sub Mensaje()
    MsgBox "¡Es hora de descansar!"
End Sub

Llamar a procedimientos Sub con más de un argumento

El siguiente ejemplo muestra dos formas de llamar a un procedimiento Sub con más de un argumento. La segunda vez que se llama a CalcuCasa, es necesario utilizar paréntesis a ambos lados de los argumentos ya que se utiliza la instrucción Call.

Sub Principal()
    CalcuCasa 99800, 43100
    Call CalcuCasa(380950, 49500)
End Sub

Sub CalcuCasa(precio As Single, salario As Single)
    If 2.5 * salario <= 0.8 * precio Then
        MsgBox "No puede permitirse esta casa."
    Else
        MsgBox "Esta casa está a su alcance."
    End If
End Sub

Utilizar paréntesis al efectuar llamadas a procedimientos Function

Para utilizar el valor que devuelve una función debe asignar la función a una variable y encerrar los argumentos entre paréntesis, tal y como muestra el siguiente ejemplo.

Respuesta3 = MsgBox("¿Está contento con su salario?", 4, "Pregunta 3")

Si no está interesado en el valor que devuelve una función, puede efectuar la llamada a la función de la misma forma que si llamara a un procedimiento Sub. No utilice los paréntesis, incluya una lista de argumentos y no asigne la función a una variable, todo ello como muestra el siguiente ejemplo.

MsgBox "¡Tarea concluida!", 0, "Cuadro de tarea"

Precaución   Si en el ejemplo anterior se incluyen paréntesis, la instrucción puede producir un error de sintaxis.

Transferir argumentos con nombre

Una instrucción de un procedimiento Sub o Function puede pasar valores a los procedimientos que llama mediante argumentos con nombre. Los argumentos con nombre pueden aparecer en cualquier orden. Un argumento con nombre se compone del nombre del argumento seguido por dos puntos y un signo igual (:=) y el valor asignado al argumento.

El siguiente ejemplo efectúa una llamada a la función MsgBox utilizando argumentos con nombre que no devuelven ningún valor.

MsgBox Titulo:="Cuadro de tarea", Mensaje:="¡Tarea concluida!"

El siguiente ejemplo llama a la función MsgBox empleando argumentos con nombre. El valor que devuelve la función se asigna a la variable respuesta3.

respuesta3 = MsgBox(Titulo:="Pregunta 3", _
Mensaje:="¿Está satisfecho con su salario?", Botones:=4)