Beruflich Dokumente
Kultur Dokumente
Caso 1
Disponemos de un procedimiento principal que contiene un bucle for que se repite
cuatro veces. Dentro del bucle únicamente tenemos una línea de código que llama al
subprocedimiento Saluda y le pasa el valor de i como parámetro.
El subprocedimiento Saluda recoge el parámetro i como valor (ByVal). Mediante
un MsgBox mostrará en una pequeña ventana emergente un saludo
diciendo Hola junto al valor de i, que será un número de 1 al 4. Luego, y dentro del
subprocedimiento, se asigna a i el valor 100.
Caso 2
En el procedimiento principal asignamos a las variables x, y, z el valor 5. Imprimiremos
su valor empleando para la variable x la columna A, para la variable y la columna B y
para la variable z la columna C. Llamamos al subprocedimiento Dobla y le pasamos
como parámetros los valores x, y, z.
El subprocedimiento Dobla recibe el parámetro x por referencia (ByRef), el
parámetro y por valor (ByVal) y el parámetro z lo recibe sin indicar nada para ver
cómo trata VBA por defecto los parámetros que se pasan a un subprocedimiento o
función. Se dobla el valor de x, y, z. Se imprime nuevamente el valor de x, y, z en la
fila dos de las columnas A, B, C respectivamente. Veremos que los valores impresos
son 10, 10, 10, esto es así ya que estamos imprimiendo el valor de la variable interna
del subprocedimiento y en los tres casos esta variable es el doble de cinco.
Finalizado el subprocedimiento se vuelve al procedimiento principal y en la fila tres se
imprimen nuevamente los valores de x, y, z. Pero ahora vemos que lo que se imprime
es 10, 5, 10. Veamos el motivo de esta diferencia.
Sub Principal_2()
x = 5: y = 5: z = 5
Cells(1, "A") = x: Cells(1, "B") = y: Cells(1, "C") = z
Call Dobla(x, y, z)
Cells(3, "A") = x: Cells(3, "B") = y: Cells(3, "C") = z
End Sub
Sub Dobla(ByRef x, ByVal y, z)
x = 2 * x: y = 2 * y: z = 2 * z
Cells(2, "A") = x: Cells(2, "B") = y:: Cells(2, "C") = z
End Sub
Caso 3
Queremos listar los números del 10 al 20. Disponemos de un procedimiento principal
que llama a un subprocedimiento que se denomina Listado, al que se pasan dos
parámetros ay b. El parámetro b se puede pasar por valor o por referencia. Si se pasa
por valor la lista impresa se genera en vertical y si se pasa por referencia la lista
impresa se muestra en diagonal.
Sub Principal_3()
b = 1
For a = 10 To 20
Call Listado(a, b)
Next a
End Sub
Sub Listado(a, ByRef b)
Cells(a, b) = a
b = b + 1
End Sub
Caso 4
Vamos a calcular el montante final al que se llega aplicando la ley de capitalización
compuesta con los siguientes datos.
Capital inicial C = 1.000 €
tipo de interés i = 0,15
tiempo años t = 3
Sub Principal_4()
i = 0.15
t = 3
C = 1000
Cells(1, "H") = Montante(i, t, C)
Cells(2, "H") = Montante(i, t, C)
End Sub
Function Montante(ByVal i, t, C)
Montante = C * (1 + i) ^ t
i = i - 0.05
End Function