Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procedimientos Sub
Static. Opcional. Indica que las variables del procedimiento se
conservan cuando el procedimiento concluye.
Sub. Requerido. Palabra clave que indica el principio de un
procedimiento.
Nombre. Requerido. Cualquier nombre de procedimiento vlido (Igual
que las variables, pero no se pueden poer nombres de celdas, i.e.,
J34).
lista_argumentos. Opcional. Representa una lista de variables,
encerradas entre parntesis, que reciben argumentos pasados al
procedimiento. Para separar los argumentos se usa una coma.
Instrucciones. Opcional. Representa las instrucciones de VBA vlidas.
Exit Sub. Opcional. Una instruccin que fuerza una salida inmediata
del procedimiento antes de su conclusin formal.
End Sub. Requerido. Indica el fin del procedimiento.
Haciendo clic sobre el botn o forma de una hoja de clculo. Este botn o
forma debe tener un procedimiento asignado.
Cuando ocurre un evento. Estos eventos incluyen apertura del libro de trabajo,
guardar el libro de trabajo, cerrarlo, hacer un cambio a una celda, activar una
hoja y otros muchos temas.
Sub ActualizarHoja()
....Cdigo del procedimiento
End Sub
10
11
12
13
14
Argumentos
Los datos pasados por un argumento pueden ser:
l Una variable
l Una constante
l Un literal
l Una mattriz
l Un objeto
EJEMPLO
Public Sub Saluda(Nombre As String)
MsgBox "Hola " & Nombre & "; esta usando " & Application.Name
End Sub
Al llamarla tenemos que suministrar un nombre de usuario. El
procedimiento Saludos llama al anterior de varias formas todas
ellas equivalentes y con el mismo resultado
15
Argumentos
Sub Saludos()
Dim Nombre Usuario As Integer
Dim Nombres(10) As Integer
NombreUsuario = Jos Ruiz Hernandez
Nombres(1) = Jos Ruiz Hernandez
Call Saluda Jos Ruiz Hernandez
Call Saluda NombreUsuario
Call Saluda Nombres(1)
End Sub
Ofimtica - Excel con VBA - Parte 4
16
Argumentos
El siguiente ejemplo calcula la media de los elementos de
una matriz de una dimensin
Sub Media(num() As Integer)
Dim i as Integer, suma As Integer, c As Integer
For i = Lbound(num) to Ubond(num)
suma = suma + num(i)
c=c+1
Next
MsgBox La media es: & Str(suma/c)
End Sub
Sub LlamarMedia
Dim mat(5) As Integer
mat(1) = 4:mat(2) =5:mat(3) =8:mat(4) =1:mat(5) =2
media(mat)
End Sub
17
Par
Parmetros por valor o por referencia
En el caso de pasar el dato de un parmetro como una
variable, el procedimiento receptor puede efectuar
modificaciones en el valor de la variable parmetro.
EJEMPLO
Sub Cuadrado(num As Long)
num = num * num
End Sub
Este procedimiento recibe un valor en el parmetro num el
cual es elevado al cuadrado. Si lo usamos del siguiente
modo:
Sub Llamar_a_Cuadrado()
Dim x As Long
x=5
Call Cudrado(x)
MsgBox Cuadrado del nmero: + Str(x)
End Sub
18
Par
Parmetros por valor o por referencia
obtendremos el cuadrado del nmero: 25 y adems el nuevo valor de
la variable x ser 25.
Cuando el procedimiento llamado puede modificar las variables del
procedimiento que llama decimos que es un paso de parmetros
por referencia.
Si el procedimiento llamado no puede modificar el contenido de una
variable del procedimiento que llama se dice que el paso de
parmetros se hace por valor.
EJEMPLO
Sub Cuadrado(ByVal num As Long)
num = num * num
End Sub
Ahora el procedimiento Cuadrado no puede modificar el valor original
de la variable num, ya que los pasamos por valor (ByVal) y por
tanto no calcular nada.
19
Par
Parmetros por valor o por referencia
Debemos modificarlo de la siguiente manera:
Sub Cuadrado(ByVal num As Long)
num = num * num
MsgBox Cuadrado del nmero: + Str(num)
End Sub
Sub Llamar_a_Cuadrado()
Dim x As Long
x=5
Call Cudrado(x)
End Sub
Si se pasa una variable definida como tipo de dato
definido por el usuario a un procedimiento, se tiene
que pasar por referencia. Intentar pasarla por valor
genera un error.
Ofimtica - Excel con VBA - Parte 4
20
10
Par
Parmetros por valor o por referencia
UN EJEMPLO REAL
El objetivo de este ejercicio es disear una utilidad que ordene las
hojas de un libro de trabajo por orden alfabtico.
Requerimientos del proyecto
Debe clasificar las hojas de un libro de trabajo activo, en orden
ascendente.
Debe ser muy fcil de ejecutar
Siempre debe estar disponible. En otras palabras, el usuario no
tiene por que abrir un libro de trabajo para emplear esta utilidad.
Debe funcionar adecuadamente para cualquier libro de trabajo
abierto.
No debe presentar ningn mensaje de error de VBA.
Lo que sabemos
A menudo, la parte ms difcil del proyecto es saber por dnde
empezar. En este caso hemos empezado por hacer una lista de lo
que se sabe acerca de Excel que pueda ser relevante para los
requerimientos del proyecto:
21
Par
Parmetros por valor o por referencia
Lo que sabemos
Excel no tiene comandos que ordenen hojas
Se puede mover una hoja fcilmente, arrastrando su etiqueta de
hoja.
l
22
11
Par
Parmetros por valor o por referencia
El planteamiento
A pesar de no saber an exactamente cmo
proceder, se puede intentar planear una
estructura preliminar que describa las tareas
generales requeridas:
1) Identificar el libro de trabajo activo
2) obtener una lista de los nombres de las hojas
de clculo de un libro
3) Contar las hojas
4) Ordenarlas
Lo que se necesita saber
Cmo identificar el libro de trabajo activo
Cmo contar las hojas del libro de trabajo activo
Cmo obtener una lista de lo nombres de las hojas
Como ordenar la lista
Ofimtica - Excel con VBA - Parte 4
23
12