1. Programación del Excel conVBA
(Visual Basic para Aplicaciones)
Correo:
jarmoncada@gmail.com
Procedimientos Sub – Parte 3
Argumentos por ByVal y ByRef
Clase 23
Andrés Rojas Moncada
Blog:
excelhechofacil.blogspot.com
YouTube:
youtube.com/jarmoncada01
Twitter:
twitter.com/ExcelHechoFacil
Facebook:
facebook.com/AndresRojasMoncada
2. Visual
Basic
for Applications
E X C E L
&
Clase 23
Alcance
Elección del criterio para pasar argumentos a procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal - ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
3. Visual
Basic
for Applications
E X C E L
&
Elección del criterio para pasar argumentos a
procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal – ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
Alcance
Generalidades
¿Cómo maneja VBA la memoria del PC cuando
trabaja con argumentos?
Espacio que se reserva en la memoria del ordenador con un nombre
definido que asocia y almacena un determinado tipo de datos
durante la ejecución de un procedimiento.
Memoria del PC
Variable
V1 Dirección 1
V2 Dirección 2
V... Dirección...
ByRef | Por referencia
Modo de pasar un argumento a un
procedimiento pasando su dirección en
vez de su valor.
Esto hace posible el acceso del
procedimiento a la variable real.
Como resultado, el valor real de la
variable puede ser cambiado por el
procedimiento al cual se pasa.
ByVal | Por valor
Modo de pasar un argumento a un
procedimiento pasando su valor en vez
de su dirección.
Esto hace posible el acceso del
procedimiento a una copia de la
variable real.
Como resultado, el valor actual de la
variable real no puede ser cambiado
por el procedimiento al cual se pasa.
C1 Dirección de la copia V1
C2 Dirección de la copia V2
C... Dirección de la copia V...
4. Visual
Basic
for Applications
E X C E L
&
Sintaxis a
emplear
Sintaxis general
[ Public | Private ] [ Static ] Sub nombre ([ ByVal | ByRef ] nombre_variable [()] [ As tipo ])
[instrucciones]
[Exit Sub]
[instrucciones]
End Sub
Elección del criterio para pasar argumentos a
procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal – ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
Alcance
Sub Procedimiento1 (ByVal a As Long, ByRef b As Long)
a = a + 1
b = b + 1
End Sub
Ejemplo simple
Sub Procedimiento2 ()
Dim x As Long
Dim y As Long
x = 1
y = 1
Call Procedimiento1 (x, y)
MsgBox "La variable x = " & x & vbCrLf & "La variable y = " & y
End Sub
Resultado
5. Visual
Basic
for Applications
E X C E L
&
Aspectos
esenciales
Se debe usar ByRef para el parámetro matricial
Elección del criterio para pasar argumentos a
procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal – ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
Alcance
Sub NombreProcedimiento (ByVal Matriz () As String)
[instrucciones]
End Sub
Sub ProcedimientoUno ()
Dim Contador As Long
Dim Matriz () As Long
Dim VariableMatriz As Variant
For Contador = 1 To 10
ReDim Preserve Matriz (1 To Contador)
Matriz (Contador) = Contador * 10
Next Contador
VariableMatriz = Matriz ()
Call ProcedimientoDos (VariableMatriz)
End Sub
Resultado
1
Sub NombreProcedimiento (ByRef Matriz () As String)
[instrucciones]
End Sub
Sub ProcedimientoDos (ByVal MiMatriz As Variant)
MsgBox MiMatriz (7)
End Sub
6. Visual
Basic
for Applications
E X C E L
&
Sub ProcedimientoDos (ByRef Trabajador As Persona)
MsgBox Trabajador.Nombre
MsgBox Trabajador.Apellido
MsgBox Trabajador.Edad
End Sub
Aspectos
esenciales
Las variables declaradas como tipo de datos definidos por el usuario no pueden
pasarse como argumentos ByVal
Elección del criterio para pasar argumentos a
procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal – ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
Alcance
Sub NombreProcedimiento (ByVal Trabajador As Persona)
[instrucciones]
End Sub
Type Persona
Nombre As String
Apellido As String
Edad As Integer
End Type
Resultado
2
Sub NombreProcedimiento (ByRef Trabajador As Persona)
[instrucciones]
End Sub
Sub ProcedimientoUno ()
Dim Empleado As Persona
Empleado.Nombre = "Olga"
Empleado.Apellido = "Mojica"
Empleado.Edad = 38
Call ProcedimientoDos (Empleado)
End Type
7. Visual
Basic
for Applications
E X C E L
&
Creación de un
reporte simple
Elección del criterio para pasar argumentos a
procedimientos
¿ Qué es ByVal ? | ¿ Qué es ByRef ?
Sintaxis a emplear
¿ ByVal – ByRef ?
Aspectos esenciales a tener en cuenta
Concejos, claves, información útil
Ejemplos en la hoja de cálculo
Crear un reporte simple en Excel
Alcance
¡GRACIAS POR SU
ATENCIÓN!