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)