Professional Documents
Culture Documents
TABLA DE CONTENIDO
Gestin de Macros......................................................................................................... 2
Crear una nueva macro............................................................................................. 2
24
LA FICHA PROGRAMADOR................................................................................................ 30
UNA RPTDA VISTA DE LOS GRUPOS DE OPCIONES DE LA FICHA
PROGRAMADOR. .
GRUPO CDIGO.
GRUPO COMPLEMENTOS...................................................................3 1
GRUPO CONTROLES...........................................................................31
GRUPOXML..........................................................................31
GRUPO MODIFICAR............................................................................31
32
OBJETOS DE EXCE
LAS COLECCIONES.
36
PROCEDIMIENTO
FUNCIONE
EVENT
CODIGOS DE E
PALETA DE COLORES............................................................47
SELECCIN DE FILAS................................................................50
SELECCIN DE COLUMNAS. .
INSTRUCCIN WITH.
CDIGOS DE FORMATO..................................................................55
TRABAJAR CON LIBROS Y HOJAS...................................................58
63
SentenciaDIM....................................................................................................69
Tipos de variable:.................................................................................................69
Variable Variant...........................................................................................................69
Declaracin de Variables......................................................................................... 70
Dimensionar variables............................................................................................. 73
Utilizar variables...................................................................................................... 73
Constantes......................................................................................................81
Los Procedimientos............................................................................................................82
Procedimiento Function.................................................................................................84
Estructuras de programacin.....................................................................................85
Ingreso de datos: Emplear las funciones MsgBox, InputBox..................................86
94
Instruccin
Select....Case.
Contador.........................................................................................................129
Acumulador.
Next...................................................................................................143
Do Loop. .
Crear Formulario..............................................................................160
Insertar UserForms....................................................................162
Controles del formulario. .
Aadir controles a un UserForm..........................................................165
Verificar el resultado. .
Im portar y Exportar mdu los.
Expo ar duIo..........................................................................214
Impo tarMdulo................................................215
Ver la descripcin de la Funcin Personalizada..............................218
220
Errores tpicos. .
Estructura de manejo de errores...............................................221
La instruccin On
Error. .
222
Constantes.............................................................................259
Vinculacin anticipada..............................................................................................259
Lazos FOR EACH.............................................................................................................. 259
Objeto Range no Objeto de seleccin...................................................................259
La actualizacin de pantalla..................................................................................260
Objetos simples en lugar de Objetos compuestos.................................................260
Ca
Gestin de Macros.
Objetivos:
Pgina 1
Gestin de Macros.
Si rea l iza una ta rea en forma conti nua en Microsoft Excel, puede automatizar la tarea
mediante una macro. Una macro es una serie pasos (Fig. 2) que incluye la seleccin de
comandos y funciones que se al macenan en una aplicacin de Microsoft Visua l Basic
em pleando un mdulo y se puede ejecuta r cada vez que requiera para llevar a cabo
una tarea.
en
los
botones
de
recorrido.
3. Cl ic en el botn Cerra r.
la
Ficha Desarrollador.
3. Asig nando la macro a un botn dela barra de herram ientas de acceso rpido.
Eliminar macros.
Las macros que ya no se requieran se eliminan desde el cuad ro de dilogo macro
(Fig. 6), en la ficha Desarrollador.
Grabar macros.
Es importante que se tenga definido claramente el proced miento com pleto para
real iza r la ta rea que se desea automatizar, pues como se ha dicho antes, si
macro,
se
comete error en algu no de ellos, stos quedarn g ra bados como parte del
procedimiento.
Se debe tener muy presente, lo sig uiente:
Si ya tiene la seguridad de saber el procedimiento paso a paso de la tarea a
automatiza r se procede a g rabar d ichos pasos en una nueva macro.
macro
slo
fu nciona
con
las
direcciones
de celda
relativa
(Fig.
7),
las
acciones
y, a
Asgnar rraoo a
7eado
. nu.
Fig. 5 Fijar Referencias Relativas.
'
Prueba
Fig. 6 Aceptar el Dato.
6. En la ficha
Inicio,
en
el
gru po
Porta papeles,
haga
clic
en
el
7. Para ejecuta r la macro g rabada, borre los conten idos de las celdas B2 y
botn
Nombre de la maoo:
Crabaan Absoluta
Cancr
Notar que el contenido siempre se guarda en la celda C4, no importa donde se ubique la ce
Referencia Absoluta.
.. n.
3.
y, a
compruebe
el
. u.
7.
clic
en
:
b
Cancelar |
Actividad 1: Crear un nueva macro para generar los meses del ao.
Procedimiento de grabacin.
Pr - nualr
1. Seleccione la
ficha
2. En el gru po Cdigo, realice lo sig uiente (Fig. 19):
Escriba el
nombre : meses
1 Enero
t
Enero
Febrero
Marzo
4 Abril
5 Mayo
Jun io
J u Iio
Agosto
Septiembre
IO Octubre
t t Noviembre
t2 Diciembre
Fig . 12 Generacin de los Meses.
8. Clic en la celda AI .
9. Detenga la grabacin (Fig. 24).
Pgina 11
Nomtve de la maoo:
meses
Botn 1
Fig . 26 Botn de comando insertado.
Genera Meses
E
Genera Meses
Seguridad de macros.
La seguridad es un tema importante cuando se trabaja con Excel 2010 macros. Si
abre las hojas de clculo que contienen macros de fuentes externas, estas macros
pueden ser perjudiciales para su equipo. De forma predeterminada, Excel le
protege de la ejecucin de macros, pero si va a crear sus propias macros, es
probable que desee cambiar la configuracin de seguridad de proteccin.
Siga estos pasos para ver y establecer el nivel de seguridad de macros en Excel
2010:
1. En la ficha Desarrollador, haga clic en el botn Seguridad de macroa (Fig.
29) en el gru po Cdigo.
. |
| .|
Grabar macro
Visual
Deshabilitan
todas
las
macros
excepto
las
firmadas
Habilitar
notificacin. Esto puede ser til si usted tiene un montn de macros, pero
ser conscientes del riesgo al utilizar macros de fuentes desconocidas.
Pgina l5
2
4
7
8
ApelI:W
C-100
Windows
C-101
Word
C-103
Excel
C-\02
Word
Horario
08.00-10.30
8 00-10 30
10 30-13 00
08 00-10 30
10.30-13.00
17 00-19 30
08 0610 33
10 30-13 00
17 00-19 30
Se requieren de 3 macros:
Macro 1:
Abrir formulario de Alumnos, macro de nombre: abrealumnos.
Macro 11:
Abrir formulario de Cursos, macro de nombre: ab recursos.
Macro III:
Abrir form ula rio de Profesores, macro de nom bre: a b rea profesores.
Este libro
Pgina 17
Profesores
Retornar
todo
el
contenido
en
una
nueva
versin
de
nombre :
Formula riola.xlsm.
Recuerde que se est g rabando una macro y como tal requ iere que
se guarde como :
Libro de Excel habilitado para macros (*.xIsm)
los
HH
O Rojo
O 'zerde
8. Ejecute las macros haciendo clic en cada botn de opcin y se da r cuenta que el
rango de celdas B3:H9, cam bia de color de borde, acuerdo a l botn de opcin
pulsado.
estn da r o de uso com n, razn por la cual Microsoft ha prepa rado un pool de
plantillas de uso libre (Fig . 43).
lHmero
Pgina 21
IJuevo
.
. r
En este caso hay que adoptar el sig no de soles como moneda, rea lice lo sig uiente:
a. Seleccione toda la hoja.
b. Ingrese a formato de celda.
c. Seleccione la categora moneda, l uego en smbolo:
Encuesta de Mercado
48).
Encuesta de lVlercado
Pgina 23
ar a
Encuesta
en
el
comando
Nuevo P -- -
Detener
grabacin.
Fg. 3
sgn
b tn d
nd .
Pgina 26
En este caso emplear el archivo FormularioIV.xlsx, el cual tiene dos Hojas (Fig.
Encuesta Hist o nc o
Encuesta de Mercado
Encuesta de Mercado
Onro
Provnc m
Se o
3. Escriba el nombre de la
[Aceptar].
+' .'
to
Encuesta de lVlercado
j soldadura
Pgina 27
Apel! dos
Oaa
Pan:a
Nomdes
van
&aflos
Domo!!o
Av 0au 8&6
A vCau Ms
D n o
e ado
tex do
Povsra
r ma
uma
&eo
V
v
. g.
Fig. 43 Detener g rabacin de la macro.
Ca
La Macro
el Cdigo.
Objetivos:
o
e
o
Entorno de programacin.
Objetos de Excel . e
Eventos.
La macro y el cdigo.
La ficha Desarrollador.
hoja
de
Excel,
tambin es una gran manera de acceder a las distintas opciones para la creacin
de una aplicacin.
Puede utilizar sus habilidades de prog ramacin para automatizar las tareas en
Excel.
contiene
diferentes
opciones
tiles
para
los
XML.
Modificar.
Grupo Cdigo.
El grupo Cdigo contiene diferentes opciones:
La opcin Visual Basic permite iniciar el Editor de Visual Basic.
Visual Macros
Basic
A Seguridad de
macros Cdigo
Pgina 30
Grupo ComPlementos.
El g rupo Complementos permite ha bilitar en
Excel Complementos como Solver, COM.
Complementos Complementos
COM
Grupo Controles.
Incluye funcionalidad para agregar
controles a una interfaz de usuario,
por ejemplo controles ActiveX para la
hoja de clculo Excel. Puede Ver
cdigo y entrar al Modo de diseo,
se pueden modificar las Propiedades
del control y Ejecutar cuadro de
dilogo (Fig 64).
Propiedades
Qi Ver cdigo
Insertar Modo
Diseo @ Ejecutar cuadro de dilogo
Controles
Grupo Xbf L.
El grupo XB L contiene opciones
tiles para la codificacin XF1L en
Excel. Ofrece opciones para escribir el
cdigo fuente XML, importar y
exportar archivos XllL, y actualizar
los datos XML (Fig 65).
E! Actua li a r dato .
XML
Fig. 3 Grupo XML.
Grupo 55odificar.
El grupo Nlodificar contiene el Panel de Documentos como
nica opcin (Fig 66).
Panel de
documentos
Modificar
Fig. 4 Grupo
Nodificar.
Entorno de programacin.
Las macros son de gran utilidad para el usuario que le permite realizar procesos con ms
rapidez y ahorro de tiempo. Pero hay que saber que ellas estn asociadas o
est n
accin
con
la
incorporacin
de
con ms propiedad .
i.
ii.
iii.
1)
2)
3)
4)
5)
La Barra de Men.
La Barra de herramientas.
La ventana del Explorador de proyectos.
La ventana de Propiedades.
rea de edicin de Cdigo.
Pgina 32
Para Sa l i r del Editor de Visual Basic, puede hacerlo de las sig uientes formas:
E. Salir del Editor de Visual Basic sin cerra r la ventana de Programacin.
Ventana de Proyectos.
En esta ventana se muestra una Iista jer rquica
de
los
proyectos
todos
los
elementos
A!temarcspens
C di
yr.,m vsrno
-'"
Ventana de Propiedades.
Pgina 34
Mdulos.
en Visual Basic que posteriormente se
'"""
Est ndar,
Clase y
Formulario.
Examinador de objetos.
Permite
recorrer
los
objetos,
mtodos,
propiedades
ingresar
ejecutar una
lnea
de
cdigo en Visual Basic, y ver de inmediato el resultado que se obtend ra. Por tanto, se
utilizar a la hora de depura r cdigo de Visua l Basic (Fig 77).
Objetos de Excel.
Visual Basic es un entorno de programacin orientado a objetos. Qu sig nifica
orientado a objetos? Sig nifica que en el entorno de Visual Basic, se progra ma todo lo
El objeto Range se refiere a una celda o a un rango de celdas. Normal mente depende
de un objeto WorkSheet.
Programa Nacional de Informtica
Pgina 36
Por lo cual, se puede decir que un objeto Application puede contener varios Libros
Column y Row, contienen respectivamente los datos de la fila y la col umna que se
refieren con la celda.
Font, contiene el tipo de fuente de los ca racteres que se muestran las celdas (Arial,
Courier, Times New Roman, etc) .
Ta mbin es posible llevar a cabo acciones sobre los objetos que facilita Excel . Cada una
de estas acciones recibe el nombre de mtodos. Por ejemplo para el objeto Range se
tienen los sig uientes mtodos :
Activate, activa una celda determi nada, es decir, coloca el cursor (el foco) sobre ella.
Clear, borra el contenido de una celda o rango de celdas (los valores que contienen).
Las Colecciones.
a) Una coleccin es un g rupo de objetos de la misma clase.
b) Los ms utilizados en la prog ramacin de objetos de Excel VBA son Libro, hoja
de clcu lo y rango (Workbook, Worksheet, y Range).
c) Workbooks es una coleccin de todos los objetos Workbook.
d) Worksheets es una coleccin de objetos de Worksheet.
Qtaes la hoja 1
Worksheets
("Hoja I") es
la
hoja
de
clculo
que
el
nom bre
"Hoja I".
Worksheets ( 1)
Lo anterior se refiere a la primera hoja de la coleccin .
Recuerde que Worksheets ( 1) no es necesa riamente la misma hoja que
Pgina 37
B
JP
Tenga en cuenta que, Worksheets. Range("AI ", " BS") - "JP" dar el mismo resultado
que el ejem plo anterior.
El siguiente texto "JP" en las celdas AI, A3 y AS en Hoja 2.
Worksheets(" Hoja2 "). Range("AI, A3, A5")
"J P"
Ejemplo
JP
Donde:
Procedimientos.
Son las estructuras que permiten escri bir las instrucciones que el usuario ingresa o el
Nombre_Procedimiento(
End Sub
El Nombre_Procedimiento
b) Procedimientos de Evento.
Los procedim ientos de evento son los que responden ante una accin realizada por
el usuario como : Clic, clic derecho, Pulsar la tecla Enter, etc.
Un ejem plo con cdigo sera el siguiente:
Private Sub cmdsal udos Click()
Me. IblSaIudo.Caption = " i Buen da Am igos ! "
Me.Caption = " i Listos para iniciar con VBA ! "
End Sub
En este caso el nombre del procedimiento es cmdSaludos_Click.
Este tipo de procedim ientos se asocian o enlazan con los controles de form u Iario,
por ejemplo un botn de comando. Al hacer clic sobre el botn de comando, se
End Sub
Funciones.
Las funciones son pequeos programas hechos en cdigo VBA que le permiten al usuario
em plearlos pa ra que rea licen la bores
especficas. El formato es:
Function Nombre_Fu ncin(Arg umentos)
Nombre_Funcin = Valor_a_devolver
End function
Eventos.
Los eventos en VBA permiten gestionar las acciones que rea lizan los usua rios sobre
los controles, de esta manera es posible controla r la accin a tomar cuando el usuario
hace algo definido en la hoja, con la celda o con a lgn objeto.
Alg unos ejem pios de eventos en VBA son los siguientes:
General
Fig . 16 El Worksheet.
Pgina 41
Pgina 42
F:ivzne
6r.:l SuE
v
UscFom
Fdodu
Ezd 5uk
Pgina 44
5 exro()
Range(3?).v
Depuracin
Ejecutar
o
t
'
Sur c ex u o()
Range(T2) .Valu e = Estoy en T2 " 5.t
texto2(]
6nd 5 W
5:L
l
ZI
4. Escriba :
Wor/rSAeets[3/.Aange("64 "/.t7afzre = "Esta es fa Celda B4 de fa Aoya 3".
En el espacio que hay entre Sub y End Sub.
AI escribir WorkSheets(3).Range("B4").
hoja 3
Ejecute el procedim iento y compruebe los resultados
Haga el nuevo procedi miento: Texto3 y escri ba :
escribir ActiveJ/VorJbooJr, se
est
refiriendo
a l libro
activo.
Ejecute
el
Cdigos de Edicin.
En el Excel VBA es posible em plear cdigo para trabajar o editar una celda o un rango de
celdas, as como filas o col umnas.
El objeto Range, es la unidad bsica para referirse a los objetos de edicin en Excel .
Su uso aba rca a :
Cdigos pa ra gestiona r:
Celda
Range("AI") . Select
Seleccionar
[AI]. Select
CelIs(1, 1).Select
Copiar Pega r
Nom bra r
Negrita
Itlca
Tama o
Range("B4") . Font.Size = 14
Celda
Colorindex
Borrar comentarios
Range("CI"). CIearComments
Borra r formatos
[B4].ClearFormats
Paleta de colores.
Color 0 Color 0
Color 1
C0l0 t 2
3
3
2136
Color 19
Color oColor 20
Color ,1
Color -'2
Color 13
2.
3.
procedimiento Su b : Celdas.
4. Escriba el sigu iente cd igo:
Sub Celdas()
'Formas de Seleccin de la Celda B2
Range( B2"). Select
[BZ]. ielect
CeIIs(2, 2).Select
'ingresa el nombre Julio en la celda BZ
CeIIs(2, 2). Value - Julio
Pgina 47
End Sub
5. Guarde el libro con macros : Celdas.xlsm.
Rangos
Range("AI : AS") . Select
Seleccionar
Copiar Pega r
Nom bra r
Negrita
Sub Rangos()
Formas de Seleccin del Rango B2.'
B6 Range("B2. B6 ").Select
[B2.' B6]. Select
Escribe contenido en el Rango
Ranpe("C2. C6 ". Value -Senati"
Copia el contenido del rango C2. C6 a la celda E2
Sub Selecciona r ()
Se/ecc/ona la regin actual
5.
Seleccin de Filas.
Filas
Seleccionar
Una sola
Adyacentes
Alternas
Nixtas
Una
Insertar
[A4].EntireRow.insert
Rows( "10: 15").insert
s
n
Eliminar vacas
Rows(4). Delete
Rows("3: 5").Select
Va rias
Eliminar contenido
Borra r formato
Rows(3). Clear
RoWs( " 2: 2").CIea rFormats
Range(4.-4, 7. 7,11.15).Select
End Sub
4.
Seleccin de Columnas.
Columnas
Seleccionar
Una sola
Adyacentes
Alternas
Nixtas
Una
Insertar
n
Eliminar vacas
Varias
Eliminar contenido
Borra r formato
Sub Seleccionacolumnas ()
Se/ecciona la Columna C, la co/umna E, Co/umna /-/ y de la K
Range(C. C,E . E,H . H, K . M ). :ielec:t
End Sub
Pgina 51
Operacin
Ejemplos
' Copia la celda El
Range(C1 ). Copy
'Copia la celda D1, este formato tambin es vlido.
[V1J. CopY
Copia la ce/o'a CJ (la primera posicin e9u/vale a ha y la se9uoo'a a
co/umna)3).
. Copy
Cells(1,
Copiar
Pegar
Nombrar
Transponer
Instruccin With.
Se emplea cuando se tiene un conjunto de propiedades aplicadas a un mismo
'En el ranpo C2. C6, se aplica Negrita, Itlica, color Azul y [amao 14
Range("CZ.* C6"). Value "Datos "
Range("CZ.-C6" ).Font.BoId True
Sub Formatos ()
En el rango C2: C6, se aplica Negrita, /t/ ca, color Azul y tamao
14
End Sub
E9 EMPLO 2. Considere que desea a plicar el sig uiente formato a una fila : Negrita, doble
Puede escribir el cdigo usando With / End With. Tenga en cuenta que pa ra hacer
referencia a l objeto debe em peza r con un punto :
Wt:h Range ("B2.'D2"). Font:
.Bold True
.Sze -12
.Co/orIndex 6
. UnderIine -xIUnderIineStyIeDoubleAccounting
Pgina 53
Sub Borrar ()
. ClearContents
. ClearFormats
. ClearNotes
. Clear
End With
End Sub
Mx302
Max022
Ddtos35
Max023
Dtos 13
Max102 Max202
Max023
Max022
Max102
Max202
Max023
Max102
Max202
Max023
Max102
Max202
Fig . 26 Datos pa
ra
ordena r.
Este cdigo permite ordenar los datos que se muestran en la figura anterior.
Sub ordenar( )
With [B2].CurrentRegion
' [B3].CurrentReg ion podra ser - Range(' B3 : f4 29')
. Sort Key1: =Range("G10"), Order1:=xIAscend ng, Header: =xIGuess
. Sort Key1: = Range( "F4"), Order1 : =xIDescending, Header: =xIGuess
. Sort
Key1:= Range( "B3 "), Order1 :
=xlAscending, Key2 := Range( "C2"),
Order2:
=
xlAscending,
Key3
:Range("D2"),
Order3
:-xlAscending,
Header: =xIGuess
End With
End Sub
Cdigos de formato.
Con este cdigo es posible cam bia r la a pariencia del contenido de una hoja. En el
sig uiente ejem plo se proceder a cam biar el formato a la fila activa.
E9 EMPLO 1.
Sub formatofila( )
ActiveCell. EntireRow.Select
With Selection.Font
.Na me = "Calibri"
.Size - 14
.Striketh rough = Fa lse
.Superscript = False
.Subscript = False
.OutIineFont - Fa lse
.Shadow = False
.Underline = xlU nderlineStyleNone
.ThemeCoIor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont - xlThemeFontMinor
End With
Selection. Font. Bold = True
With Selection.Interior
.Pattern = xISoIid
.PatternTintAndShade = 0
End With
End Sub
E9 EMPLO 2. El procedimiento perm ite a plica r formato a la celda activa (Fig 96) .
Sub FormatoE()
Selection.Font.BoId - True
With Selection.Font
. Name = " Bernard MT Condensed
. Size = 11
. Strikethrough - False
. Su perscript = Fa lse
. Su bscript = Fa lse
. OutlineFont = False
. Shadow - Fa lse
.U
Underline - xlUnderlineStyleNone
.ThemeCoIor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont - xlThemeFontNone
End With
Selection. Font.Size = 20
With Selection. Font
. Color = -4165632
.TintAndShade - 0
End With
Selection. Font.ltalic = True
With Selection
. HorizontalAlignment = xlCenter
.V
erticaIAIignment - xlBottom
.W
ra pText = False
. Orientation = 0
.AddIndent - False
.IndentLevel = 0
. Sh rinkToFit = False
. Readingorder = xlContext
. MergeCells = False
End With
xlNone
xlNone
. Colorlndex = 0
.TintAndShade = 0
. Weight = xlMediu m
End With
With Selection.Borders(xIEdgeTop)
. LineStyle = xlContinuous
. Colortndex = 0
.TintAndShade - 0
. Weiqht = xlMediu m
End With
Selection. Borders(xIEdgeBottom)
LineStyle = xlContinuous
Colorlndex - 0
TintAndShade =
Med
Selection Bordersf xlEdgeRig ht)
. LineStyle - xlConti nuous
.T ntAndShade =
Weight - xlMediu m
End With
Borders(xIInsideVerticaI) Linestyle
xlNone
xlNone
End Sub
Pagina 57
Pgina 58
Sub Abrir( )
Dim Nombre As String
NombreLibro "C.\BoIetas.xIsx"
' Se valida la existencia del libro, se muestra un mensaje de aviso
IF Dir( NombreLibro) - Then
End if
brr
Dim Libro As
Workbook
Set Libro Workbooks. Open(Filename. "C. \PIaniIIas\Boletas.xIsx", Pass
Cerrar.
Guardar.
Sub Guardar( )
On Error Resume Ilext
On Erro r Resume Next, usado como control de error: Se evitar el
error derivado de una celda vaca y/o con un ca racter con el que
excel no permite g uarda r un libro
End Sub
Borrar.
Su b BorrarLibro ( )
Crear.
Sub NuevoLibro( )
Workbooks.Add
End Su b
d
Workbooks.Add
Workbooks.Add
End Sub
Pgina 60
Sub InsertarHoja( )
ActiveWorkbook.Worksheets.Add
End Sub
Es posible tambin aplicar:
Sub In9ertarHoja()
Dim Hoja As Worksheet
Selecciona r.
Sub Seleccionar( )
pa ra selecciona r l a primera hoja del l i bro activo
Active Workbook.Sheets(J).Select
' pa ra selecciona r l a seg unda hoja del l i bro activo
Active Workbook.Sheets(2).Select
no rn ol ecr i rnn r l n to res ra loja del l ibro activo
Active
iheets(3). ielect
n6 tu
WnrknheeLnf"Hn ia2
End Sub
'Caso aue el libro te no a 3 hojas, estando la hoja 2 activa
' Pa ra mover la hoJa 2 del ante de l a hoja 1
Sub moverHoia f \
Dim Hoja As Worksheet
-Sheets(1)
Ho ja. Ilove
Sheets(Sheets. Count)
Borrar.
Sub BorrarHoja( )
Sheets("Hoja1 ").Delete
End Su b
'Caso de elimina r hoja sin mostra r confirmacin
Sub borrarHoja()
Application. DisplayAlerts
False Sheets("Hoja1 ").Delete
Application. DisplayAlerts
True
End Su b
Sub NuevoLibro( )
Workbooks.Add
End Sub
--------------Caso dos libros
Sub NuevoLibro()
Workbooks.Add
En Su
Cop
Copiamos la Hoja1 despus de la Hoja3
\Hnrkshetsf"Hnjn l ).CiD )/ alter.
Worksheets(Hoja3
")
End Sub
Otro caso oara cooia r una hoja
copiarHoja
Dim Hoa As Worksheet
Set Hoia - ActiveSheet
Hoja. Copy
=Sheets(1)
Hoa - Sheets(1 J
Copy'
=Sheets(Sheets. Count)
End Sub
Pgina 61
Renombrar.
Sub Renombrar( )
Sheets(1). Name - "Precios
End Sub
Nota : No se distinguen Mayscu las de minscu las.
Sheets(" Precios") . select
Sheets(" PreciOS").select
Sheets(" precios").select
Sub ColorEtiqueta()
ActiveWorkbook. Sheets(Hoja1 ").Tab.Colorlndex
End Su b
Pa ra saber el nmero que corresponde a l color, realice lo siguiente:
4. Aceotar.
5. En la ventana inmediato del editor VBA escribe.
1-t'---h--r.7ab.Co/ornde.
Fentrnr tnxtn
on
.HnriznntalAl q nment = xlCenter
b. Alinear a la izquierda
With Selection
.HorizontaIAIignment = xlLeft
End With
c. Alinear a la derecha
With Selection
.HorizontalAl gn ment = xlRig ht
End With
d. Fuente
e. Tamao de letra
With Selection.Font
. Size =
10 End With
f.
un
nuevo
libro,
inserte
un
nuevo
mdulo,
escriba
el
sig
uiente procedimiento:
Pgina 63
5t Iajuscula(}
Dim lO.r As Icng
wio. 6electicn
For lCnr - ? Tc 1??
.Replace C::(lC.r}, UOase( C:z{lC.r))
= _
3. Ejecute la macro
Nombre de la raoo:
ANayuscula|
Los sigu ientes ejercicios deben esta r codificados en mdulos ta l como se indica :
Sub CuentaFilas()
CantFilas = Selection. Rows. Count
Sub CuentaHojas()
mycount
MsgBox "El libro tiene " & mycount & " Hojas"
End Su b
Sub Cuenta()
Contador = Range("a 1") + 1
Range("a 1") = Contador
End Su b
Sub MiPosicion()
Fila = ActiveCell. Row
Columna
Msg Box "Ubicacin de la celda : Fila: " & Fla & ", Col umna : " & Col umna
End Su b
Su
Su
rAN
hreRn nqo(
Application. Goto
= "Ventas"
Su
OcultatHo jas( )
Sheet1 .Visihle - xlSheetVervHiJrlen
Si ocu lta sus hot as de esta man era, los usua rios no ser n ca paces de
ostra
rom
os
en
Su
Ocu
F rel
AopIication.Visible = Fa lse
Pued e ocu ltar la a o ficacin Excel con esta ma cro. Esto desactiva los men s
rte F x rel
b
Programa Nacional de Informtica
End Sub
Sub InsertFilas()
Dim Rng
Sub LastRow( )
Range("a 65536"). End(xIUp).Offset(1, 0). Select
' Muchos usua rios necesitan sa ber la sig uiente fil a disponi ble pa ra los
datos de entrad a .
Esto loca liza el cdigo de la sig uiente fila disponi ble en la col umna A
End Su b
Pa ra g raba r el l i bro despu s d e ejecuta r l a macro
La seg unda macro g ua rda el l i bro lla mado " Emprendedor" ,
Se debe especifica r la ruta del arch i vo a g raba r
Nnm
Su plzquierda()
Cel da activa se ubica como pri mera fila, en la pa rte su perior de la pantalla
Artiver.i coi
Artivere| Rnw
EndVUith
Programa Nacional de Informtica
Pgina 66
Su
Pgina 67
Ca
4 Ingreso datos.
9 Ejercicios
secuenciales.
de estructuras
la interaccin con el usuario final para garantizar que las actividades estn
bien alineadas con las expectativas del usuario final.
c. Codificacin: La escritura de cdigo y desarrollo de elementos g rficos de
interfaz de usua rio pa ra transforma r las ideas en un formu la rio de tra bajo.
d. Documentacin:
Elaboracin
de
documentacin
para
proporcionar
Pgina 69
g.
Sentencia DOM.
En la creacin de sol uciones a un requerim iento se necesitan guardar valores
que en un momento oportuno sern necesarios. Estos va lores pueden ser
ingresados desde teclado o son generados por una expresin o frmula.
Pa ra ello se requ iere de objetos lla mados Variables.
La va ria ble reserva un espacio en memoria para guardar el valor a procesa r.
Pa ra poder em plea rla debe declara rta y debe hacerlo con la sentencia: Dim. (Dim
es la abreviatura de Dimensin).
Dim, declara y asigna espacio para almacenar una o ms variables.
Una va ria ble queda definida cuando se especifica:
a. El nom bre de la va riable.
Tipos de variable:
El tipo de dato a g uardar defi ne el tipo de variable a crear. Se tienen los
sig uientes ti pos de datos:
a. Numricos.
b. Booleanos.
c. Fecha / Hora.
d . De texto (cadenas).
e. Va riant.
f.
g.
De objeto.
Registros de datos defin idos por el usuario.
Variable Variant.
El ti po Variant es un ti po de dato que puede contener prcticamente cualquier
tipo de datos. El prefijo que se suele utilizar para identificar una variable Variant
es var.
Hay excepciones, por ejem plo no puede contener una cadena de longitud
Declaracin de Variables.
Se deben decla rar todas las variables que se utilizan en un progra ma para indica
r al com pilador de Visual Basic el tipo de datos de la variable y otra
1. La sentencia Dim.
2. El nombre de la va ra ble.
3. La palabra reservada As.
4. El ti po de dato a gua rda r.
a. Datos numricos.
Existen dos fa milias de datos numricos.
Tamao
Valor inferior
Valor Superior
Sufijo
Prefijo
iii
Bt1B2b
I t
2B
B
Pgina 71
-32.76
2. 1 7.
3.6
32. 6
2. 147.483.
ng
Tamao
Negativos
Positivos
Sufi)o
Prefijo
4 Bytes
dbl
Currency
8B/es
-9223372036854775808
a 0
0
a
922337203685477.5807
cur
Un cuad ro resumen :
Ejemplos:
e.
empresa.
Dim blnEstadoSalida As Boolean
Programa Nacional de Informtica
Pgina 72
Dimensionar variables.
Implica la reservacin de un espacio en la memoria, a este espacio se le identifica
mediante un nombre y est disponible pa ra que perm ita gua rda r los valores en
forma temporal d urante la ejecucin del prog rama . Asf es como se dimensiona
una variable:
Dim [identificador] As [tipo]
para almacenar un tipo de dato. Por lo tanto, si sabe que la variable solo
contendr letras, pa la bras o ca racteres no numricos seria mejor dimensionar
esa variable como String, esta clase de variables solo aceptan letras, palabras o
caracteres no numricos.
Debe entonces dimensionar correctamente la variable de acuerdo al tipo de dato
que se em plear a lo la rgo del programa.
Utilizar variables.
Es importante
que
las variables
queden
debidamente
definidas
emplea rlas.
Tambin puede declara r una varia ble escri biendo menos cdigo.
antes
de
La va ria ble tipo String permite configurar el tamao deseado del sig uiente modo.
Dim [variable] as String * [Cantidad de caracteres deseados]
Vea la diferencia :
Caso Genrico
Caso Configurado
est ejecutando.
Se deben considera r, alg unas excepciones a la regla general.
Las variables estticas. Las va ria bles estticas conservan sus va lores
entre llamadas a procedimientos. Un uso comn de variables estticas es
Una varia ble local Static tiene un perodo de duracin ms largo que el del
procedimiento en el que se declara. Los lmites de la d uracin de la variable
dependen de dnde se declare el procedimiento y si est o no Shared.
La variable se inicializa
La variable deja de
En un mdulo.
Declaracin de
procedimiento
existir
variable
esttica
puede
ser
til
si
se
necesita
va ria ble
Contador = Contador + 1
Mensaje = " El nmero de ejecuciones : " & Contador
MsgBox Mensaje
End Su b
A pesar de que el valor de una variable declarada como esttica es
retenida
despus de la finalizacin del proced imiento, d icha va ria ble no est disponi ble
Cuando
el
procedim iento
la
funcin
termina
la
va riable
se
elimina
Una de las grandes ventajas de las variables locales es que puede utilizar el
mismo nombre en diferentes subrutinas sin ningn conflicto.
Public Su b procedure_na me ( )
Dim slocalvariable As Stri ng
End Su b
Una de las ventajas de las variables locales es que se puede utilizar el mismo
nom bre en diferentes su brutinas sin ningn conflicto.
privada .
Una va ria ble de nivel de mdulo privado es visible slo en el mdulo que se
decla ra.
Pgina 76
proyecto.
stos ta mbin se conocen como nivel de proyecto o varia bles globales.
End Sub
de un "m".
Au nque declara una va riable global dentro del a rchivo donde se utiliz, ta mbin
puede decla rar una va ria ble globa l en un mdulo sepa rado para utilizarlo en
otro mdulo.
Variables privadas.
Una variable se denomina como privada si slo se puede acceder a ella desde el
mismo archivo (el mismo mdulo) donde se utiliza.
Para declarar una variable, en Iugar de Dim, se utiliza la palabra clave Private.
Se tiene el sig uiente ejemplo:
Option Explicit
Recuerde que una va riable privada puede ser accedida por cualquier cd igo en el
mismo md ulo.
Variables pblicas.
Una variable se denomina pblica si se puede acceder a ella ya sea dentro del
mismo mdulo donde se declara o fuera de su mdulo.
Para declarar una variable pblica en lugar de Dim, se utiliza la palabra clave
Public.
Se tiene el sig uiente ejemplo:
Option Explicit
Como recordatorio, una va ria ble pblica est disponible pa ra el cdigo dentro y
fuera de su mdulo . Esto significa que usted puede crear un mdulo, declarar
una variable pblica en el mismo, y tener acceso a esa va riable en otro mdulo
donde sea necesario.
Mdulo 1:
Option Explicit
Mdulo 2:
Option Explicit
Apellido = "Escalante"
Nom breCompleto = nombre & "" & Apellido
ActiveCell. Form ula R1CI = NombreCompleto
End Sub
Pgina 80
mdulos nuevos.
Es recomendable que se declare j usto debajo de la seccin declaraciones.
Constantes.
Una constante es un valor que no cam bia es decir tiene un valor propio e
independiente. Puede ser un nmero, un texto, una fecha o un valor Igico.
Ejemplos:
Numricas
Textos
Fecha
123, 145.67
: Lima", f'1ili",
Pasiona 11/07/ 1958
Los Procedimientos.
Un procedimiento se define como un gru po de sentencias que se ejecutan como
una unidad.
Los procedimientos se escriben y se a Imacena en un mdulo.
Tipos:
Proced imientos Su b y
b.
a. Procedimiento Su b.
Este es el procedimiento ms com n en una macro grabada y editada
normal mente.
Se ejecuta el cdigo Inea por Inea, pa ra llevar a cabo una serie de acciones
y/o clculos.
El formato pa ra este tipo de procedim iento es:
'Comentarios
'Comentarios
End Sub
o implcitos.
Esto permite
del nombre del procedimiento con a rgumentos opcion a les. Si los arg
umentos son usados, los usua rios deben usar pa rntesis pa ra la lista de a
rgumentos.
Pgina 82
a. Correcto
Sub TestMensaje ( )
Call MiMensaje (" i Funcion!")
End Su b
Sub TestMensaje ( )
Call MiMensaje "c Funciona?"
End Su b
c. Corrector (alternat:iva) - Sin palabra clave Call utilizado y por
lo tanto no requiere parntesis.
Sub TestMensaje ( )
MiMensaje "Funcion ! "
End Sub
Procedimiento Function.
La principa l diferencia entre un procedimiento Sub y un procedimiento Function
es que un procedimiento Function ejecuta el procedimiento y devuelve un valor
mientras que un procedimiento Sub ejecuta el procedim iento sin devolver un
valor.
Una analoga simple de un procedimiento Function en comparacin con la de un
procedimiento
Sub
puede
ilustrarse
utilizando
dos
ejemplos
con
las
caractersticas de Excel :
Archivo,
Guardar
es
una
accin
no
devuelve
una
respuesta
devuelve
una
respuesta
Procedimiento Sub.
La
funcin
Suma
procedimiento
calcula
el
rango(s)
Function.
Los Argumentos son opcionales los cuales pueden ser explcitos o implcitos.
Esto permite que los valores y / o referencias al pasar al procedimiento de
lla mada se manejen como una va riable.
El tipo de dato en el atributo As Tipo se utiliza pa ra hacer la funcin explcita. Sin
un tipo declarado, la funcin es implcita ( As Va riant ).
La ltima l nea antes del End Function utiliza el nom bre del procedim iento para
En Excel, esta funcin tam bin se puede utilizar (conocida como una funcin
definida por el usuario - UDF) (Fig 99).
+
Millas
/.
= onvertirA k m( 3)
160|
K ilomteros |=ConvertirAKm(
Estructuras de programacin.
Pa ra inicia r un entendim iento del entorno de programacin es importante que se
empiece por procesos secuenciales, es decir que la secuencia de ejecucin de los
prog ramas sea de l nea por lnea desde la primera hasta la ltima.
Pg|na
85
De esta forma ser sencillo detecta r o realiza r un segu imiento de posibles errores
de si ntaxis o de lgica de programacin .
Existe una notacin a lternativa, sepa rando las sentencias mediante el carcter;
a= 20; b=3O
c = a + b; print c
Fin de Actva''zacion
muestrauncuad rodealertade
Msg Box
TextoMensaje,
[Ttulo],
[Ayuda], [contexto] )
Sub CuadroMensajeDemo ()
Los pa rntesis no son necesa rios para una declaracin
Sub CuadroMensajeRpta ()
Dim respuesta
"Entrada de datos")
End Sub
Entrada de datos
vbNo.
Pgina 87
Valor
t'uestra Botones
vbAbortRetrytgnore
0
1
2
Solo Aceptar.
Aceptar y Cancelar.
Abortar, Reintentar y Omitir.
vbYesNoCancel
vbYesNo
3
4
S, No y Cancelar.
S y No.
vbRetryCancel
vbCritical
5
16
Reintentar y Cancelar.
Visualizar Mensaje crtico icono.
vbOKOnly
vbOKCancel
Constante
vbQuestion
vbExclamation
Exclamacin.
vblnformaUon
Informacin.
Constante
vbDefaultButton 1
Pregu nta.
Valor
Botn Predeterminado
El primer botn es el predeterminado.
vbDefaultButton2
vbDefaultButton 3
0
256
512
vbDefaultButton4
768
vbApplication Modal
Constante
Casos especiales
vbSystemModal
4096
16384
VbMsgBoxSetForeground
65536
vbMsgBoxRight
52428
8
Constante
Valor
Descripcin
vbOK
Aceptar
vbCancel
Cancela r
vbAbort
vbRetry
Abortar
vblgnore
vbYes
vbNo
No
Reintentar
Tenga en cuenta la diferencia entre los dos tipos de cuadros de mensaje con
respecto a cuando se usan parntesis. Tenga en cuenta de cualqu ier funcin debe
ser colocada en el Iado derecho del signo igual, porque devuelve un va for.
La estructura (sintaxis):
Va ria ble - Application.InputBox (TextoMensaje, [Ttulo] , [Predeterminado],
[XPos], [YPos], [HelpFile], [Hel pContextlD], [Tipo])
Argumento
Descripcin
TextoM ensaje
Ttu lo
Predeterminado
t
pF
pCD
Tp
(opcional) .
Significado
Una frmula.
Un nmero.
8
16
64
Sub entrada1 ()
Dim x
End Sub
ro cir
Por favor Ingrese un nmero
Sub entrada2 ()
Dim Y
Pgina 91
Fig . 105
Resu ltado
generado.
Sub entrada3 ()
Dim strMiNombre As String
strMiNombre = InputBox (" Escriba su nombre", " Entrada de datos")
ActiveCeIl. Val ue = "Mi nom bre es & strMiNom bre
End Sub
Cancelar
B
1
2 Mi nombre es
Sub entrada4 ()
Dim strResult As String
strResult = InputBox (Prompt : = " Por favor, ingrese el monto",
Sub entrada4 ()
Dim strResult As String
strResult= InputBox (Prompt: ="Por favor, ingrese el monto", _
Pgina 93
Dato de Retorno
Frmula.
Nmero.
2
4
8
16
Texto.
64
Matriz de valores.
Else
RangoSeIecc onado.Select
End Of
End Sub
el sigu iente
Aceptar
Pg|
na95
Ca
Estructuras de
Programacin Condicional.
O Instruccin If...Then...Else simple.
4 Instrucciones Condiciona les anidadas.
O Instruccin Select....Case.
9 Desarrollo de ejercicios prcticos.
Pgina 97
instrucciones Verdad
Else
instrucciones Falso
End If
declaracin.
Una sola lnea If... Then ... Else.
Puede utiliza r la sintaxis de una lnea pa ra las construcciones breves y sencillas.
Pa ra distingui r entre una si ntaxis de varias lneas y la sintaxis de una sola l nea :
Si en la primera lnea If, no sigue nada despus de la palabra clave Then en la
varias lneas.
En el sig uiente ejemplo, se establece el estado "Ad ulto" en la varia ble Estado si la
afirmacin es cierta :
Tambin puede utilizar va rias lneas de bloques en el caso de la sig uiente
declaracin :
f edad = 18 then
Estado - "Adulto"
Vota r = "S"
End If
Tenga en cuenta que en el caso de bloques de va rias lneas, End f se necesita,
pero en el caso de una sola l nea no.
El If ... Then ... en la seg unda forma se ut l iza para defin i r dos bloques de
condiciones :
a) La primera en el caso de que el resultado de evalua r la expresin sea
Verdadero.
b) En el caso de qu e el resultado de eva l uar la expresin sea Fa Iso.
Ejemplo :
If edad = 22 then
Toma = "S"
Else
Toma = "No"
End
If
Una vez ms, tenga en cuenta que la instruccin End If se necesita en este caso, ya que
hay ms de un bloque de instrucciones.
I Puntaje
Estado
Eva l ua
estado = "Aprobado"
Else
estado - " Desaprobado"
End f
Range("B2").Val ue = estado
End Sub
El proced imiento realiza
lo siguiente :
1. La primera lnea de cdigo declara dos variables. Una variable de tipo Integer y una
variable de tipo String .
Pgina 100
A
t
2
Puntaje
B
Estado
85 Aprobado
Eva lua
t Punta e
Estado
2
43 Desaprobado
Fig .
Evalua
procedimiento.
1. En un nuevo libro, en la hoja I, escriba el siguiente contenido y
2. Coloque un botn de comando en la hoja de tra bajo. (Fig 112).
A
Nivela
"Si" cuando es
Suponiendo que desea que Excel compruebe si el valor de la celda A2 est dentro
del intervalo de va lores 100 a BOO, es necesario extender la evaluacin de la condicin,
se puede hacer esto:
Los operadores "AND"y "OR" se utilizan en conj uncin con la instruccin "If".
Operador "AND".
Este operador se usa para realizar una conjuncin de dos
condiciones.
Cada vez que utilice el operador "AND" slo se obtend r un valor verdadero
si AMBAS condiciones son verdaderas (True y True).
6
7 PuntajeResultado 8 12
Evalua
Pgina 1 0 2
Esto sera decirle a Excel que si el valor de la celda A8 est entre IOO y BOO (True),
entonces debe hacer una asig nacin :
Range ("BB"). Value = Aceptado
Si el valor de la celda A8 no est entreIOO y BOO debe hacer esto :
Range ("BB"). Value = Rechazado"
Una vez ms, podra aad r una cantidad ili mitada de operadores AND" de todas las
End If
End If
End If
2. Forma 2
If condicion0 Then
Instrucciones 1
Elself elseif condicion 1 Then
elseif instrucciones_1
Elself eIseif_condicin n Then
elseif instrucciones_n
Else
else instrucciones
End tf
Ejemplo E: Estructura If Else.
Evaluacin
Evalua
Sub Sianidado1()
Este proced imiento devuelve el mensaje "Bueno", si las marcas son iguales a 60.
Else
If Ma rcas > - 40 And Marcas < 60 Then
Range(B3"). Va l ue = " Promedio"
Msg Box "Promedio"
Else
Evaluacin 12
Pobre
Aceptar
6 Marca
Eva luacin
Eva lua I
60
Fig
End If
End Sub
Mltiples UF ... THEN (en este ejemplo 3) se pueden utilizar a lternativa mente para el
ejemplo anterior (Ejemplo 2) Estructura Elseif, pero no es un mtodo muy eficiente.
= 80 Then
End Sub
Sub IfThenl()
Este p rocedimiento devuelve el mensaje "Apto" o " No a pto" en matemticas o
en ciencia"
End
If
Sub IfThen2()
'Este procedimiento muestra el mensaje "Apto en matemticas y No Apto en
ciencias"
Dim matemticas As Single, ciencias As Single
matemticas = 50
ciencias = 30
If matemticas = 40 Then
f ciencias = 40 Then
MsgBox "Apto en ambos matemticas y ciencias"
Else
End
If
Sub IfThen2()
Este procedimiento muestra el mensaje "Apto en matemticas y No Apto en
ciencias"
Else
If ciencias = 40 Then
MsgBox " No Apto en matemticas y Apto en ciencias"
Else
End
If
End
If
End Su b
Opcin 3
matemticas = 50
ciencias = 30
If matemticas > - 40 And ciencias > - 40 Then
Msg Box "Apto en a mbos matemticas y ciencias"
End If
If matemticas > - 40 And ciencias < 40 Then
Msg Box "Apto en matemticas y No Apto en ciencias"
End If
If matemticas < 40 And ciencias > = 40 Then
Msg Box " No Apto en matemticas y Apto en ciencias"
End If
End Sub
Ejemplos del uso en una sola lnea de sintaxis de If ... Then ... Else:
a. Ejemplo O :
If marcas 80 Then MsgBox "Excelentes Marcas"
If marcas > 80 Then MsgBox "Excelentes Marcas" Else MsgBox Aceptables"
If marcas > 80 Then If vprom > 8O Then MsgBox "Ambas Marcas y Prorned |os son
Excelentes"
Otro anida miento de la instruccin If., .Then
Pgina t 10
Sub
IfThenu
If marca = 85 Then MsgBox " Excelente marca - 85 a 90" : tsg Box "Siga
As! " : MsgBox Format(85 / 90 * 100, "0. 00") & "% ma rea"
' Ejecutar va rias i nstrucciones despus de l a pa l abra clave Then . El
m uestra 3 mensajes : "Excelente MARCA - 85
90",
"Siga
As ! " y
Cd igo
" Ma rca
94,44%
End Su b
Resultados.
Aceptar
Aceptar
Sub IfThenunalinea 2 ()
Ma rcas oscuras como promedio nico, como nico
ma rcas = 85
vprom = 75
IF marcas> 80 Then If vprom > 80 Then Msg Box " Las ma rcas y promedio
son exrel enten"
Flne
lo es" Else Msg Box " Marcas no son excelentes" Ani damiento IF . . . TH EN .
Cd igo devolver el mensaje : " Marcas son excelentes, pero el promed i o no lo
es"
End Sub
j . . .
Aceptar
Sub IfThenunaLinea3 ()
Eva Iuacin en una sola l nea
Dim marcas As Single
Ma rcas = 65
If Marcas > 80 Then Msg Box "Las Ma rcas son Excelentes" Else Of Ma rcas :>
- 60 Then Msg Box " Las marcas son Buenas" Else If Marcas = 40 Then
MsgBox "Las ma rcas son Promedio" Else Msg Box "Las ma rcas son Pobres"
utilizan do l as pala bras cl ave else if (en una sola l nea de sintaxis), si mila r
a Elseif (en varas l neas de sintaxis). Procedimiento devolver el mensaje : "
Las ma rcas son buenas".
End Sub
AI ejecutar, se debe obtener el sigu iente cuad ro
M.ero.oft Excei
de mensaje:
Sub IfThenelsif1 ()
Eva l uacin if con el sif
Dim LReg ion As String
LRegion Na me = "Sur"
Elseif LRegion - "E" Then
LReg ion Name = " Este"
ElseTf LRegion = "O" Then
LRegion Na me = "Occidente"
End If
ejecutar,
se
debe
obtener
el
Regin Norte
El IF... Entonces ... Elseif se utiliza para probar las condiciones adicionales sin
necesidad de nuevo if.
Por ejemplo:
Sub IfThenelsif2 ()
Eva l uacin if con el sid
Dim edad As Integer
Pgina 113
Tenga en cuenta que la ltima condicin en virtud de lo dems es, implcitamente una
eval uacin como: Edad < 18 aos.
Al ejecutar, se debe obtener el sig uiente cuad ro de mensaje :
35
Evalua
Microsoft Excel
Aceptar
Instruccin Select....Case.
Ejecuta diferentes bloques de cdigo o declaraciones, dependiendo de la condicin
que se se est cu mpliendo. Se eva Ia una expresin y en funcin de su
resultado se ejecutan las instrucciones asociadas.
Es muy si milar a la de TI... Then ... Else declaraciones.
Sintaxis:
Select Case expresin
Case expression valor 1
instrucciones I
Case expression va for n
instrucciones n
Case Else
else_statements
End Select
va lue n], el
convertible
tipo de
la
de
expresin.
En cada case, el valor de la expresin se com pa ra con el expression_valor,
y si se encuentra una coincidencia, las instrucciones especificadas se ejecutan.
Es necesario especificar a l menos una expression_valor.
mencionan .
Estos
(expression valor) son como una Iista de condiciones y cuando se cumple una
condicin, el bloque correspondiente del cdigo se ejecuta.
Instrucciones:
[ . . .instrucciones I
instrucciones n],
declaraciones
End Select
End Sub
AI
debe
ejecutar,
obtener
siguiente
de
se
el
Persona Joven
B
Microsoft Excel
cuad ro
mensaje
Fig. 125
Resu ltado de
aplicar el Case.
(Fig
Menos de 40 anos
valores.
Use la pala bra clave
To
en expression_valor
Case 40 To 69
MsgBox "Promedio"
Case 0 To 39
End Select
End Sub
AI ejecutar, si escribe 56 debe obtener el sigu iente cuadro de mensaje:
valores.
Para inclu i r un operador de comparacin (=, < > <,, < =, o =) en expresin_value,
utilice la palabra clave Is. La palabra clave Is se inserta automticamente antes del
operador de com pa racin, si no est especficamente incluida. Ver ejemplo.
Ejemplo:
Sub seleccionarCasels ()
'Se ingresa l a tem peratura y se muestra un cuad ro de mensaje de acuerdo a l
va for i ngresado
Case Is < 0
Msg Box " Muy Fro"
End Select
End Sub
AI ejecutar el proced imiento, si escri be 30 debe obtener el siguiente cuadro de mensaje
(Fig . 127) :
pa ra cadenas de
caracteres.
Vea a lgunos ejem pios.
MsgBox Voca|es
Case 2, 4, 6, 8
Ejemplo:
a lfabtico,
y util iza
el
del
mtodo de comparacin bina ria (que disting ue entre maysculas y minsculas) porque
Option Com pare
no es especificado.
Sub seIectCaseMultiple_2 ()
' pl tanos d evolver el mensaje de " texto entre l as manzanas
y uvas,
a lcance"
Pgina 1 2 0
Pgina 121
Option Compare (es decir Option Compare Binary o Option Compare Text) se
puede utiliza r para esta blecer el mtodo de com pa racin. Debe ser utilizado en
el nivel de mdulo, antes de cualquier procedimiento. Si la declaracin Option
Com pare no se especifica, el texto predeterm inado mtodo de comparacin
es binario.
Ejemplo - Option Compare Binary o por defecto.
Sub optionCom pareBinar'y ()
Opti on Com pa re Bi na ry se especifica y por lo tanto la com pa racin texto ser
entre mayscu l as y minscu las. " M anzanas" devolver el mensaj e " Fuera d
e a l cance", " uvas" devolver " Fuera de a lcance" ( "G" vi ene antes de "a " en
el cd igo ANSI), "tierra" devol ve r " El texto est entre las manzanas y las
uvas", mientra s que " tierra " est " Kuera de a lcance "
Sub optionCompareText ()
Option Compare Text se especifica y por l o tanto la com paracin de texto no
End Select
End Sub
Anidacin.
En el bloque de instrucciones Select ... Case se pueden anidar unos dentro de
otros y tam bin con If ... Then ... Else y bucles (loop como interior o exterior),
sin ningn Imite.
Cuando Select ... Case est anidado dentro de otro, tiene que ser un bloque
com pleto y term nar con su propio End Select , dentro de un determ nado case
o Case Else.
Ejemplo: (utilizando anida dos Select Case . . . instrucciones).
Sub selectCaseNested :t ()
'Comp roba r si u na serie est vaca o no est
vaca, si
tiene un
va for
numrico y l uego eva l uar si ta mbin tiene una frmu l a, y si no es numri co,
entonces Cul es la longi tud o ta ma o d el texto?
Msg Box
rango.Address
&
"tiene
un
valor
numrico"
Select Case rango. HasFormula
Case True
Msg Box rango.Add ress & " tiene una frmu la"
End Select
Case Else
tamao = Len(rango)
Msg Box rango.Address & " el tamao del texto es " &
tamao
End Select
End Select
End Sub
Pgina 123
Acepta
Tarifa - "A"
Case is > - 80
Tarifa = " B"
Case is > = 70
Tarifa = "C"
Case is > - 60
Tarifa = " D"
Case Else
Tarifa = " Error en dato"
End Select
Msg box Ta rifa Asignada : & Ta rifa
End sub
DD
Acepta r
de
un
SELECT...
CASE,
una
sola
varias
i nstrucciones
En el caso de un gran nmero de condiciones, las declaraciones Of... Then ... Else
dan una apariencia com pleja y el cdigo tiende a ser ilegible.
Desarrollo de ejercicios prcticos.
Este ejercicio perm ite evaluar el contenido de una celda. En un nuevo mdulo
inserte el siguiente procedi miento:
Sub ti podato()
Contiene texto
Else
End If
If ActiveCell .HasFormu la Then
End If
End If
End
Sub
Contiene u na frm u la
Ca
Estructuras de control
repetitivo.
Objetivos:
9 Instrucciones de control repetitivo.
*
For... Next.
'
Do Whi le.
Do... Unt l .
*
Pgina 127
Do Loop.
sea necesa rio, hasta que una condicin dada siga siendo verdad o un punto especfico (o
va for) se cu mpla, cuando se hace falso se sale del lazo y se contina con el siguiente
cdigo del prog rama.
Las estructuras de control repetitivas se utilizan para resolver casos donde sea necesario
1. El bucle for
El bucle For VBA y el Do While loops son los dos bucles ms importantes en el
lenguaje VBA. Pueden ser utilizados para llevar a cabo una tarea especfica de forma
iterativa hasta el momento en que se cumpla una condicin (o el bucle se termina
VBA). Para complementar el trabajo de las estructuras repetitivas se debe entender
claramente el concepto de las va ria bles que hacen de: Contador y Acum ulador.
Contador.
Contador
memoria
que se
reserva en la com putadora, en la cual el valor que guarda puede cam biar d urante
resultante se ASIGNA (se gua rda) en la va ria ble del Iado izquierdo.
Como se puede observa r, a la varia ble Nmero_de_veces, se le incrementa
un valor constante (1), es decir, a su contenido se le suma un valor y el
Valor inicial
Cantidad vueltas =
Cantidad vueltas -
Cantidad vueltas
Cantidad vueltas -
Cantidad vueltas
Acumulador.
Contador
cantidades variables.
Ejemplo. Incremento de valor.
observar,
la variable
Total_sueldos,
se
le incrementa
una
variabl e
es
un
acum ulador.
Pgina 130
Total sueldos 0
Esto hace que tengan un valor inicial y se vaya modificando en cada repeticin
que se realiza dentro de un Lazo, Loop o proceso repetitivo.
Valor inicial
Total_deuda
Total_deuda =
Total deuda -
BOO
(*)
Total_deuda - 100
Total_deuda
- 50
Instrucciones.
For...Next.
El For... Next repite un bloque de cdigo un nmero especfico de veces.
En el caso de
tener: For i - 1 To
10 Next i
utilizar el bucle de esta manera, se ga rantiza que se ejecuten cada uno de los
pasos necesarios pa ra ir desde el valor i nicial hasta el va for fi nal .
Ejemplo O. Su ma de los primeros 5 nmeros enteros.
Sub forNext1()
Dim n As Integer
Dim nsuma As Integer
nsuma = 0
For n = 1To 5
nsuma - n + nsuma
Next n
t sgBox nsuma
End Sub
La va riable contador es "n", la cual se debe declara r.
se incrementa el contador cada vez que se ejecuta el bucle. El valor por defecto del
incremento es 1, salvo que se especifique otro va for.
El control del incremento lo rea liza l a instruccin Next contador, y vuelve a la instruccin
FOR, que repite el bloque de cdigo si el valor del contador no supera el va for "final" de
5.
Si el contador es igual a l valor "final", el bucle contin ua r, se detiene cuando el valor
1),
Pgina 1 3 2
anterior de 10).
e. Despus de ejecutar el bucle quinto, se realiza el incremento de la instruccin Next
contador (es decir, n) en un valor de 6 y vuelve a la instruccin FOR, pero esta no se
ejecuta d ebido a que su valor ha excedido el valor "final" de 5 que fue considera
do como Imite. Entonces, MsgBox mostra r (Fig 133) :
En resumen, Un bucle For ... Next utiliza una variable como contador que aumenta
o disminuye su valor en cada repeticin del bucle.
Ejemplo 02. En el sig uiente ejem plo se rellenan las 10 primeras celdas del 1 a 1 10.
1. En un nuevo libro, en la hoja 1.
2. Ingrese al editor VBA y escriba las siguientes lneas de cdigo (Fig 134).
es la varia ble
6
7
8
9
0
8
9
10
incrementa
en 1.
SE fo:r.ex7?()
Dim i As Integer
Observe el uso del Step 2, le ndica a l For que rea lice incrementos de 2 en 2.
Los valores generados son los sigu ientes (Fig 137) :
Observe el uso del Step -2, el cua l le indica al For que rea lice decrementos de 2
en 2.
Los valores generados son los sig uientes :
B
10
Fig . 139 Resultados del For.
Debe tener en cuenta que el proceso se inicia en la celda AIO, pues el for,
inicia en 10 y va dismin uyendo de 2 en 2.
se
B
68
78
Evaluar
66
Fig. 140 Config ura r Botn de comando y datos.
S.r derofor.(
r r ooraI Az In:ege:, :As Izzege: zozai =
For i = 1 To 4
'Se selecciona la celda j se e a1ua pa:a ver si cxpie la co.-.d:citn
?eIlai, : .&e1ecr
1 Isg3ox Repezicin =
If Oe1Ie( i, l.value s? Itez zozaI - zozaI + i
::er i
1eg3o x total & valores r ores que &?
a. Las dos primeras lneas de cdigo declara dos variables de tipo Integer. Uno
llamado total y una i nombre.
A contin uacin, se inicializa la va riable total con el va for 0.
superiores a 50.
f.
A
1
68
Eva luar
78
Repeticion - J
Aceptar
Fig. 142 Resultado, en la repeticin 1.
g. Clic en el botn de comando Aceptar.
B
Evaluar
65
Repeticion - 2
Aceptar
11
'
68
78
"
Eva luar
Microsoft Exc..
8
9
i.
68
78
|Evaluar
Repetir in - 4
Aceptar
11
Fig. 145 Resultado, en la repeticin 4.
j.
Explicacin:
Las lneas de cdigo entre For y Next se ejecutarn cuatro veces.
Para i = 1, 2, 3 y 4.
Para i 1, Excel VBA asigna 1 a la variable i y obtiene la celda (1, 1). Valor. Este es el
primer valor. , Excel VBA ta mbin incrementa la variabl e total en 1 porque el primer
valor es mayor que 50. Cuando Excel VBA alcanza Next i, toma el siguiente valor de i,
o sea 2 y de nuevo ejecuta la instruccin For. Para i = 2, Excel VBA asigna 2 a i y
obtiene la celda (1,2). Este es el segundo valor. Para i - 2, Excel VBA tambin
incrementa la variable total en 1 porque el segundo valor es mayor que 50. Pa ra i = 3,
etc. Excel VBA recorre el cdigo de cuatro veces y despus que sa le del bucle For
A
B el resultado:
Next y ejecuta el resto del cdigo,
presenta
Evaluar
Microsoft Excel
Aceptar
For i - 1 To 4
el
Texto
Evala
puntaje
l uego
el
siguiente
contenido
(Fig.
60
- to
s
Fig.
Pgina 140
80
90
Iva1uaPunta)e
90
72
86
La propiedad Offset.
La propiedad offset tiene 2 argumentos que corresponden a la posicin relativa de
la celda.
El formato genera l es el sigu iente :
Object.offset(RowOffset, ColumnOffset)
'Al considera r 0 pa ra los a rgumentos de fi l a y col umna
ActiveCell.Offset(O, O).Select
Si la celda activa inicial hubiese sido ES, ahora la celda activa sera F5 (Fig . 15 1) .
ActiveCell.Offset (O,1) - 1
Fig .
Pgina 1 4 2
Formato:
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
El procedimiento indicado abajo muestra el nom bre de cada hoja del libro actua 1.
Vea el uso del bucle Each...Next loop a travs de la coleccin Hojas de Trabajo.
1. En un nuevo libro, en la hoja 1.
2. En la ficha Programador, inserte un botn de comando en la hoja de tra bajo.
3. Si pide el nombre de una macro, haga clic en el botn de coma ndo
[Cancelar].
Su b M uestra NombreHoja()
Dim mihoja As Worksheet
For Each mihoja In Worksheets
Msg Box mihoja. Name
Next mihoja
End Sub
Aceptar
Ver hojas
Ver hojas
c'
.
Fig. 156 Salida del uso del For Each, hoja 3.
15
0
Emily
Mili
11/07/2012
Ver Celdas
Ver Celdas
Ver Celdas
11/07/20t2
1J/07/20
fa da SBA T eneden+emdolD072012
Fig. 163 Resu ltado de eva l uar con la fecha 1 /07/20 12.
5. Seleccione la celda
procedim iento se
AI,
del
libro
actua 1.
AI
ejecuta r el
obtiene:
E
6
4
0
Do While.
El Excel Do While es otra de las estru cturas repetitivas de mucha utilidad pa
ra los prog ramadores. En Excel Do While Loop repite un conju nto de
instrucciones
/ cdigos definidos mientras que una condicin especfica es cierta.
La condicin se eva l a como verdadera, el cdigo que forma el bucle se ejecuta
tanta veces como indique la condicin .
Observe el siguiente ejem plo:
Bucle
Sub Elimina_espacios()
Dim Cadenasi n Espacios As String Decla ra ti po stri ng
Dim posicion As Long Indica la posicin del caracter encon trado
Pa ra este ejem plo se asu me que l a cel da tiene el texto : J u l io Csa
r Se tiene la facilidad de coloca r cu a l qu ier otro texto con espacios
Cadena si n Espacios = ActiveCell
La fu ncin i nstr retorna la posicin del primer espacio que se encu en tra
espacio
Loop
Msg Box Cadena si nEspac os
End Sub
Do While permite recorrer l a cadena en la celda activa hasta que haya procesado
todos los espacios disponibles.
Do Loop.
En este caso la instruccin eval a la condicin al nal del bucle.
Siempre el bucle se repetir mientras la condicin esta blecida en el While sea
cierta o de un resultado verdadero.
nsuma = n + n5uma
nro = nro - I
Loop While nro 5
MsgBox nsuma
End Sub
declaraciones
"
prueba
la
condicin al final del bucle. Si la condicin se com prueba al principio del Bucle,
el bloque de cdigo no se ejecuta si la condicin se cumple un principio en s
mismo (y el bucle no se ejecuta ni una sola vez), mientras que si la
[Bloque de cdigo]
Loop
Do
[Bloque de cdigo]
Loop Until [Condicin]
Esta estructura de bucle, como el Do... While Loop, se a seg ura de que el bucle
se ejecuta r al menos una vez, la eva l uacin de la condicin se realiza a l na l
del bucle. El bucle se detendr cuando la condicin sea verdadera. (Com parar esta
estructura de bucle para el bucle Do.. . Until Loop).
Pgina 150
Por ejemplo. Para asignar los 10 primeros enteros a las primeras fila de la
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim Cad Millones
Dim Cad M les
Dim CadCientos
Programa Nacional de Informtica
Pgina 152
ConvierteCifra(Cientos,
0)
Else
End
End If
If
= Cadena & " " & Trim (CadCientos) & " y " &
Cadena - Cadena & " " & Trim(CadCientos) & " y " &
Per i m a\i & "/100"
End
Cells(5, 3) = Trim(Cadena) 'Ubica el texto en letras en la celda : CS
Centena - Mid(Texto, 1, 1)
Decena = Mid(Texto, 2, 1)
U nidad = Mid(Texto, 3, 1)
txtCentena -CIEN
txtCentena = "
DOSCIENTOS" Case "3"
txtCentena = "TRESCIENTOS"
Case "4"
txtCentena "CUATROCIENTOS"
Case 5"
txtCentena = QUINtENTOS
' trentena = SFISCIENTOS
Case "7"
tvtPontona = "' FTECIENTOS"
==- "CHOCIENTOS
rase u
' trentena -"fi|OVECIENTOS
tXtDeeri a - "ONCE"
**7ecena = "DOCE"
*+Decen a - "TRECE"
Case "4"
txtDecena - "CATORCE"
Case "5"
txtDecena ="QUINCE"
Case "6"
txtDecena - "DIECISEIS"
Case "7"
txtDecena = "DIECISIETE"
Case "8"
txtDecena = "DIECIOCHO"
Case "9"
txtDecena = "DIECINUEVE"
End Select
Case "2"
txtDecena - "VEINTE"
If Unidad < "0" Then
txtDecena = "VEINTI"
End If
txtDecena = CUARENTA"
If Unidad < "0" Then
txtDecena ="CUARENTA Y "
case 5
txtDecena = "CINCUENTA"
If Unidad < > "0" Then
End If
Case "7"
txtDecena - "SETENTA"
If Unidad < "0" Then
txtDecena
="SETENTA Y "
End If
Case "8"
txtDecena - "OCHENTA"
If Unidad < "0" Then
txtDecena = "OCHENTA Y "
End If
Case "9"
txtDecena = "NOVENTA"
End Select
If Decena < "1 "
Then Select
Case Unidad
If SW Then
txtU nidad = "UN"
Else
txtU nidad - "UNO"
'Jnidad = "DOS"
'Jnidad - "TRES
'Jnidad = "CUATRO"
b
t-tU nidad = "SEIS"
Case
txtU nidad = "SIETE"
txtUnidad ="OCHO"
Case "9"
txtUnidad - "NUEVE"
End Select
End
If
End Function
4. Escri ba un nmero en la celda B5 y haga clic en el botn de comando Convert r. El
Pgina 157
Ca
Creacin de
formularios de usuario.
Objetivos:
4 Crea r Formu Iario.
O Insertar UserForms.
4 Controles del form ula rio.
Pgina 159
Se realizarn los pasos para mostrar cmo crear un formulario de usuario para el
ingreso de datos sobre a lgn requerim iento en particular.
El trabajo se divide en dos tiempos principales :
1. Tiempo de Diseo: Se realiza la insercin del form ulario, los controles (Fig.
Tiem po de diseo.
0epartarento
Controles
JStermedio
Avanzado
Tiem po de diseo.
Cdigo
VBA
Telefono.
Pgina 161
Insertar UserForms.
a. Al insertar el UserForm se em pieza a Constru ir el formu Iario.
View.
formulario. Si
usted
hace
esto
de
forma accidenta l,
de
que
ejemplo
VBAProject
seleccionado
(Fig.
171)
en
a
el
el
libro
actual
(Libro 1))
Insertar
Fo rmato
proyecto - V8AProjcct
est
Explorador
continuacin,
(por
de
abra
_j
proyectos
el
men
172) .
Depura
@ V8A8ro/ect (Libo:t)
Formularios
8 UserForm 1
Pgina 163
gbi
.:
l7
Cuadro de texto
Cuadro oe herramientas
AI igual que con el UaerForm cua Iquier control que se coloca en el formulario
del mouse cambia r a una flecha de dos puntas (Fig. 178)) o ca mbiando
los
Para mover un control arrastre desde uno de los bordes de puntos en un punto
entre los controladores de tamao (el puntero del ratn se mostrar una flecha
de cuatro puntas (Fig. 179)) o ca mbiar la valores de sus propiedades Top y Left.
g _p
p,g, p
Cada control debe tener un nombre significativo para que cuando se escriba el
cdigo se pueda fcilmente identificar.
Por ejem plo el primer cuadro de texto tiene actua l mente el nombre TextBox 1.
utilizar (por ejemplo, en Iugar de Date emplear txtDate para una fecha).
Ahora use la caja de herramientas para colocar una Etiqueta (Label) en el
formu Iario. Para cambia r el ttulo de la etiqueta que puede escribir directa
mente en la etiqueta o puede ca mbiar su propiedad Caption en la ventana de
propiedades.
Cuando se mueven los controles alrededor del formu Iario es deseable que
encajen con los puntos de la cuadrcula. Aunque esto es una caracterstica til,
a veces es necesario colocar los objetos con mayor precisin. Usted se dar
cuenta de que no se puede colocar la etiqueta exactamente al nivel del centro
de la caja de texto. La rejilla obliga a ser demasiado alto o demasiado baja.
Utilice la ventana Propiedades para restar (o agregar segn sea necesario) 3
unidades arriba de la etiqueta de modo que est en posicin correcta en relacin
con el cuad ro de texto (Fig. 180).
Fig. 180 Utilice la ventana Propiedades para ajustar con precisin la posicin de
un control.
Cuando el control no es parte del cdigo, no es necesa rio da r a la etiqueta un
nom bre personalizado porque, en el proyecto, no se esta r refirindo a ella en el
cdigo, au nque en otras circunstancias, es posible que desee hacerlo.
Aqu est una Iista de los controles con referencias de ejemplos y uso de los
prefijos:
Control
Valor(es)
Propiedad
TextBox
Na me
txtApellidos
Label
Caption
Apellidos
ComboBox
Na me
cboDepartamento
Na me
ch kRecibido
Caption
Rec bi?
Na me
txtDescripcin
Height
45
Width
132
Scrollbars
2-fmScroll barsVertica l
Na me
cmdAceptar
Caption
Aceptar
Na me
cmd Limpiar
Caption
Limpa r
Na me
cmdCancelar
Caption
Cancelar
CheckBox
TextBox
CommandButton
CommandButton
CommandButton
mismo
libro.
Escriba
una
Dlas
colu nina de
LUIS
mates
Escribir un dato en cada celda . Si desea que
3 Mircole
los elementos aparezcan en orden alfabtico
4 s
en la Iista en la hoja de clculo, d b
Jueves
ordenarlos en forma estndar o en forma
g
viernes
personalizada.
y Sbado
Domin
'
Ahora seleccione las celdas que contienen los elementos de la Iista y el nombre
del rango de celdas. La forma ms fcil es haga clic en el cuadro de Nombres (el
cuadro justo encima ya la izquierda de la celda AI), escriba Das como ejemplo
(Fig. 181) y pu Ise [Enter].
Haga clic en otro l ugar de la hoja de trabajo a continuacin, compruebe que se ha
nom brado correctamente el nombre del rango haciendo clic en la flecha que
la propiedad RowSource. Escriba el mismo nombre que utiliz para la rango que
is6tyle
0 - fris6tylel pt
is tidth Loed NatchEntry t4atchRequired Calse
f4axtength f4ousefcon NousePointer
t - frNatchEn False
(f+inguno)
- kNousePr
Fig.
Pruebe el cuadro combinado, haciendo clic en el formu Iario para activan o (pulse
la tecla [FS]) y podr ver que el cuad ro combinado muestra a hora la Iista de
das. (Fig . 183) .
Compruebe
Muchos
el
orden
usuarios
de
cuando
tabulacin.
desean
navegar"
por los controles en el formu tario lo hacen
pulsando la tecla
[Tab] .
El
orden
de
navegando" por
los controles a
ttNom0re btpellidos
Ladel1 ctodias Lael2 txtHorario cma.cenar cmdLimpiar Lab+13
txtF recuencia
El diseo del formu la rio se ha term nado. El siguiente tra bajo es escribir el
cdigo VBA para prog ramarlo, de
El
cdigo
es
r alrv
AutoSue BadCo BadS e
Pgina 170
Fig .
Pgina 171
Cancelar. (o el botn derecho del ratn y seleccione Ver cdigo) para abrir la
ventana de cdigo e ingresar al mdulo de cdigo.
En el Editor de Visual Basic se ha escrito las l neas Sub y End Sub del evento
Click del botn de comando. Coloque el cursor en la lnea en blanco entre estas
Haga clic en el botn Cancela r del formu Iario. El formu Iario debe cerrarse y debe
volver al Editor de Visua l Basic. (Fig. 187).
Realice lo siguiente:
I. En el form ulario actual, inserte u na etiqueta, u n cuad ro de texto y u n botn de
comando. (Fig . 188).
Control
Propiedad
Valor
Label
Caption
Nombre
TextBox
Name
Name
TxtNombre
CmdAceptar
Caption
Aceptar
CommandButton
Pgina 1 7 2
Ne.txtNombre.Setfocus
End if
Realice lo siguiente:
RowCount. Ahora
escriba las Ineas que perm iten escribir el dato ingresado en la hoja de clcu
lo (Listado 01) :
Listado 01.
Fig .
Control
Com mand Button
Propiedad
Valor
Na me
Cmd Limpiar
Caption
Limpiar
parte
(Listado
Listado 2:
Next vctrl
Debe tener el sig uiente cdigo (Fig 194) :
).
Una vez terminada la labor de codificacin del formu Iario, debe com pila r y proba
r el cdigo. Si usted est convencido de que el
form u Iario
est
funcionando
correcta mente, g uarde el a rchivo. El trabajo est casi terminado. Todo l o que
queda por hacer es crear un macro pa ra abr r el form ula rio.
Entonces para abrir el formulario desde el entorno del Excel, hay varias
maneras de hacer esto, todos implican una macro que contiene la declaracin
muy simple:
frmDatos.Show
Listado 3:
Worksheets("Hoja 1").Activate
frm Datos. Show
Debe mostra r el sig uiente contenido (Fig 196) :
Pero el cdigo que escribe los datos en la hoja de c lculo especfica la hoja de
c lculo por su nombre, podra ser omitido y los datos seran escritos en el
luga r
correcto.
El usua rio puede ejecuta r esta macro en el men de la forma habitual
(Ficha Programador -+ Gru po Cdigo -3' Macros) o desde un botn en la barra
de herramientas de acceso r pido o ta mbin se puede asignar a un botn de
comando.
Pa ra abrir el formu la rio desde un botn de comandos, siga los sig uientes pasos:
1. Del gru po formu Iario, inserte un botn de comando en la hoja 1 (Fig 197).
" i
Insertar l.lcdc
lngresoDatos
Fig . 197 Botn de comando para ejecuta r la macro.
Datos.
de
Excel
de
eventos
'
veP /
xy
VBARrojscf (lMrvfown01tsm)
Suk un o_Cpen()
Fig. 199 Crea r la macro para a brir el form ula rio frm Datos.
Guarde todo el contenido del libro.
- ' i "
AI a brir nueva mente el libro Usted com probar que el form ula rio se a bre
automticamente.
Compruebe que va l ida el ingreso del nombre y que el que ha ingresado se va
Pgina 180
El formu la rio de usua rio fi nal se ver algo como la sigu iente imagen (Fig. 201).
Crear el formulario.
Como se observa en la figura 201, hay:
a. Cuadros de texto.
Nombre (Se ingresar el Nombre y a pellidos de la persona).
Cuadros combinados.
Departamento.
z
Curso.
Agru pados en un marco (Nivel) para que el usuario pueda elegir slo uno de
los niveles.
d. Casillas de verificacin.
Almuerzo.
Refrigerio.
e.
Botones de comando.
ingresar.
Limpiar Datos.
Cancelar.
Cada
predefinida
cuando
Pgina 1 8 2
Control
Tipo
Ajuste
Propiedad
Name
FrmCa pacitacion
Ca ption
Capacitacin Empresarial
Textbox
Name
TxtNom bre
Telfono
Textbox
Name
TxtTelefono
Departamento
Combo box
Name
CboDepartamento
Curso
Combo box
Name
CboCurso
Nivel
Frame
Name
Fra Nivel
Ca ption
Nivel
Bsico
Option Button
OptBasico
Intermedio
Option Button
Optlntermed io
Avanzado
Option Button
OptAvanzado
AI muerzo
Check Box
UserForm
UserForm
Nombre
Refhgeho
Ingresar
Cancelar
Limpiar Datos
Check Box
Command Button
Command Button
Command Button
Ch kAlmuerzo
Ebd
Falso
Ch kRefr ger o
Enabled
Falso
Name
Caption
Cmdlngresar
Default
Verdadero
Name
CmdCancela r
Caption
Cancelar
Cancel
Verdadero
Name
Cmd Limpia r
Caption
Limpiar Datos
Ingresar
Agregar el cdigo.
Inicializacin del formulario:
La mayora de los form ula rios necesita de alg n tipo de configuracin cuando se
abren.
Esto permite esta blecer valores por defecto, por ejem plo un cam po vaco, o
los datos de las listas de los cuadros combinados.
por
una
la
ventana
de
cdigo
se
a bre
por
primera
listas
vez
contiene
desplega bles
un
en la
3. Esto crear
el
procedimiento
que
necesita.
.AddItem Ad ministracin"
.AddItem " Diseo"
.AddItem " Publicidad"
.AddItem " Log stica "
.AddItem "Transporte"
End With
cboDepartamento.Val ue = ""
With cboCurso
Ahora
puede
eliminar
el
.AddItem "Access"
.AddItem "Excel"
.AddItem "PowerPoint"
.AddItem "Word"
.A
ddItem "DreamWeaver"
End With
cboCurso.Va l ue "" optBasico - True
chkAl muerzo =
False chkRefrigerio =
False txtNombre.
End Sub
SetFocus
txtTelefono.Va l ue = ""
Luego vienen las instrucciones para los cuad ros com binados. Primero se ag regan
los datos de la l ista, a conti nuacin, el va for i nicial del cuadro combi nado que se
With cboDepartamento
.AddItem "Ventas
.AddItem " Marketing "
(Agregar los que sean necesarios...)
End With
optBasico = True
Para elegir si seleccionar Almuerzo o Refrigerio se emplean las casillas de
verificacin. Ambas casillas de verificacin se establecen inicia l mente en False
(es decir, sin ma rca r). Se establece en True si desea que la casilla de
verificacin se muestre ya marcada:
ch kAlmuerzo = False
ch kRefrigerio False
esto tiene el mismo efecto de "hacer clic en" ese botn cuando el usuario
presiona la tecla Esc en su teclado.
Pero esto por s solo no har que cualquier evento suceda en el formulario. Es
necesario crear el cdigo para el evento click del botn que, cierre el formulario.
Rea lice el sig uiente procedimiento:
1. Estando a bierto el form ulario de usuario pa ra edita r en el Editor de
Una macro se puede emplear para ejecutar otra macro (o una serie de macros
si es necesario) mediante el uso de la palabra clave: Call.
Siga los siguientes pasos:
1. Haga doble clic en el botn Limpiar Datos del formu Iario. La ventana de
cdigo del form utario se abre con el procedimiento cmdLimpiar_Click () Iisto
para su edicin.
2. Agreg ue el siguiente cdigo al procedimiento:
Private Su b cmdClea rForm_CIick()
Call UserForm Initalize
End Sub
I. Haga doble clic en el botn Ingresar. La ventana de cdigo del form u Iario se
a bre con el proced i miento cmd ingresa r_CIick () l isto para su edicin .
Range("AI").Select
Do
If IsEm pty(ActiveCelI) - False Then
ActiveCelI.Offset(1, 0). Select
End If
Loop Until IsEm pty(ActiveCeII) = True
ActiveCeII. Value
txtNombre. Value
cboDepa rtamento.Va l ue
lse
Arti' re|l Cffs'fM Gl " =4| = h| o
Ra gef "A
el ert
").Activate
Range("A1") . Select
Las sigu ientes l neas mueven la seleccin hacia debajo de la hoja de c lculo
hasta que encuentre una celda vaca:
Los IF de Excel son sencillos de usar. Se pueden tener muchas opciones como
desean, slo tiene que insertar un ElseIf adicional para cada uno. Si slo hay
dos
verificacin.
Para el
al muerzo
se
End
If
End
If
End
If
Una ma rca en la casilla del Refrigerio sig nifica "S" es deci r la persona desea un
si
la
casilla
marcada, entonces no se sa be si la
de
persona
Pgina 190
se deja
en
blanco ("") .
Pgina 191
se
verdadero pa ra tener un
Se
usa
esta
opcin
para
activar
la casilla
de
Una lnea adicional de cdigo puede hacer que el check se retire cuando el cuad
ro est desactivado. Aqu est el cdigo:
Private Sub chkAl muerzo_Change()
If chkAl muerzo = True Then
Else
Sub AbrirfrmCapacitacion()
frmCa pacitacion. Show
End Sub
Pgina 1 9 2
3. Inserte un control de imagen, se puede insertar una imagen del logo de la em presa o
a lguna otra imagen representativa de lo que se quiere resalta r en el form ulario de
Bienvenida (Fig 203) .
Pgina 193
Fig. 203
Insedar e|
Control Imagen.
Fg4
ns
205) :
Fig. 205
7. Ubicar el objeto ThisWorkbook, haga doble clic y cree el procedim iento indicado en la
Fig . 207 :
Archivo
Edicin
Ver Insertar
Formato
Depuracin
Ejecutar
Herramientas
Complementos
8. Haga doble clic en la zona de las cuadriculas del UserForm 1 y escriba el siguiente
procedi m iento. Ver figura 208.
Pgina 1 9 4
Fig .
Application. OnTime Now + TimeVal ue("00 :00 :05"), " KillTheForm "
End Sub
Fri' e s,r
illT:,ro r()
Jnload UserForn.1
ind 5uh
ZCmo funciona?
Cuando se abre el libro, se ejecuta el procedim iento Workbook_Open.
Este procedi miento muestra el formu la rio de
aparece,
se
produce
el
evento Activate
usua rio.
Cuando
que activa
el
el
UserForm
procedimiento
UserForm_Activate.
Este procedimiento utiliza el mtodo OnTime
para
En
este caso, el tiempo es de cinco segu ndos. (Es posible cambiar este interva lo
modificando el a rgumento de la funcin TimeValue).
OpArray: U na matriz de cadenas que contiene los elementos que ser n mostrados
La sig uiente fig ura 21I, de la izquierda, muestra el Userform que se muestra a l usuario.
Cuando el usuario hace clic en Aceptar, la fu ncin Getoption devuelve un valor entre Iy
12. Si el usuario hace clic en Cancelar, la funcin devuelve Fa lse.
En la
Cancelar
Aceptar
Formas: Bisel
Botones de
comardo
Formas:
redondeadas
Fig. 212 Contenido del libro de Getoption.
El primer botn de comando se enlaza a la macro : NombreNles.
El seg undo botn de comando se en taza a la macro: NombreDia.
Escriba la
celda
relacionada
2. Ingrese al ventana
de cdigo, en
un
nuevo
mdulo, inserte
los siguientes
'7owlreMes()
Dim Cps(1 To 12) As S o rizg
Dim i As Incege:
Diw res_elegiao As 'ariant
?iea si i rr a ie i:a -:r r-z
r: i - i T .z
Mes)
6lse
Razge(A6)j- tps(me e_elegido)
En If
Fig .
t4o wr reDia()
Cps()
Ls 'sriunr
Dim Dim
Din
Cnn
Range(Diaz)
ReDim
.Co znn Cpa (i Tc Cnn)
ro:
- :=c
i
Dr
'4en i
ia elegido - Ge Cpuicn (Ops, l, Seleccione un Da) IT ia eleoido = Talse T.e/ Range(A
) /- "
Pgina 200
'As VBComponent
TopPos = 4
MaxWidth = 0 'Guarda el ancho del mayor Optionbutton
For i = LBound(OpArray) To UBou nd(OpArray)
Set Newoption Button - TempForm. Desig ner.Controls. Add("forms. Option Button.
1") With Newoption Button
.Width = 800
.Top = TopPos
.Tag = i
.AutoSize = True
If Default - i Then .VaIue - True
End With
TopPos - TopPos + 15
Next i
'Ag rega el botn Can ce la r
With NewCommandButton 1
.Ca ption ="Cancelar"
.Height = 18
.Width = 44
.Left - MaxWidth + 12
.Top = 6
End With
'Ag rega el botn Acepta r
eight - 18
.Width = 44
.Left = MaxWidth + 12
.Top = 28
End With
'Ag rega r controlador de eventos-su bs pa ra l os boton es de comand o
ctI.Tag"
.InsertLines X + 10, " Next ctl"
Programa Nacional de Informtica
Pgina 202
With TempForm
.Properties("Caption") = Title
.Properties("Width") - NewCommand Button 1.Left + NewCom mand Button1.Width +
10 If .Properties(" Width") < 160 Then
.Properties( " Width") = 160
NewCommand Button 1.Left = 106
NewCom mand Button 2. Left = 106
End If
.Properties("Height") = TopPos + 24
End With
' M uestra el form u la rio
End Function
SeleccionaHojas.
Sub SeleccionaHojas()
Dim i As Integer
Dim cb As CheckBox
Application.Screen Updati ng = Fa lse
PosSu p = 40
For i = 1 To ActiveWorkbook. Worksheets.Count
Set HojaActua l ActiveWorkbook.Worksheets(i) 'Sa lta hojas
vacas y hojas ocu ltas
If Application.CountA(HojaActuaI.CeIls) < > 0 And
HojaActuaI.Visible Then
ContadorHojas = ContadorHojas + 1
PrintDlg.CheckBoxes. Add 78, PosSup, 150, 16.5
PrintDlg.CheckBoxes(ContadorHojas) .Text =
HojaActual. Na me
PosSup = PosSup + 13
End If
Next i
Mueve el botones Acepta r y Cancela r
PrintDlg. Buttons. Left = 240
'Con fig ura a l tura de di logo, el ancho y la leyenda
.Width = 230
PrintDlg.
Buttons("Button
BringToFront
PrintDlg.
2").
Buttons("Button
HojaActuaI.Activate
Application.ScreenU pdating - True
If ContadorHojas < > 0 Then
If PrintDlg. Show Then
For Each cb In PrintDlg.CheckBoxes
If cb.Va l ue = xIOn Then
Worksheets(ob.Caption) .Activate
'ActiveSheet. Printout
Impresin Directa
Next cb
End If
Else
MsgBox "Todas las hojas estn vacas."
End If
Borra r hoja de di l ogo tem pora l (sin
aviso) Application. DisplayAlerts = Fa lse
PrintDlg. Delete
Reacti va r hoja orig ina l
HojaActua l.Activate
End Sub
3. En
la
hoja
Pedidos
inserte
un
botn
de
comando
en lace la
macro
SeleccionaHojas.
Imprimir
6. Haga clic en el botn Cerrar vista preliminar si desea sal ir o en el botn Imprimir
si desea realizar una impresin fsica .
Ca
Funciones personalizadas
control de errores.
Objetivos:
9
Errores tpicos.
Estructura de manejo de errores.
R
Pgina 207
Para la creacin de una UDF se requiere el uso de VBA. Esto significa que un
usuario no puede grabar una UDF, tiene que crear la UDF por si mismo. Sin
embargo, esto no quiere decir que no se puede copia r y pegar fragmentos de una
macro gra bada en su UDF.
Una UDF no tiene la misma flexibilidad que un procedimiento estn da r. Una UDF
en una celda, excepto la carcasa de la celda de la UDF. Una UDF no puede utiliza r
en una
ejecucin. Slo se debe utilizar para realizar un clculo de algn tipo y no tomar
el Iugar de un procedimiento.
como
pa rmetro. A
conti
nuacin, el cdigo de la fu ncin util izar ese va for para ca lcular otro valor y
presentar el resultado.
II.
Depura
Mdulo.
III.
IV.
ResultadoCurso = "Desaprobado"
End If
End Function
Pgina 210
El bloque For, que ejecuta una parte del cdigo de un nmero especificado de
veces. Por ejemplo para calcular el Factorial de un nmero entero positivo:
Public Function Factorial(valor As Integer) As Long
Dim resultado As Long
Dim i As Integer
If valor = 0 Then
resultado = 0
Else1f va for = 1Then
resultado = 1
Else
resultado - 1
For i = 1 To valor
resultado = resultado * i
Next
End
If
Factorial = resultado
End Function
Puede tam bin usa r la instruccin selectiva : Select Case, como se muestra en
el siguiente cdigo (Fig. 220) :
jN umeroAetrze
Furiic Fa-czioz Noe:oALez:as(z:c As Inteoe:) Ao Sz::zo
D:n. rec uln aoo Aa St:inc
Selecz Case n:o
Case
resultado - Uno
Case ?
resultado - Dos
Por ejemplo :
= NumeroALetras (A4)
Pgina 212
f.
=N umera ALetras(
A
4
)
E
=NumeroALetras( )
Tambin puede utiliza r una frmu la definida por el usua rio, buscando en la
categora Definida por el usuario del asistente Insertar frmula (Fig. 223).
Basta con hacer clic en el Fx botn situado a la izquierda de la barra de frmulas.
Verificar el resultado.
Debe comprobar va rias veces despus de usar la funcin para a seg urarse de que
trata los va lores de diferentes pa rmetros correcta mente (Fig. 224) :
1 Uno
3 Tres
4,C uatro
s!-Numer ALetra S(
fonnatoQepurar'nEjecMarHewamientasComplementosVentanaAyu
26''0P '2011
Carp
01:00
Carpi Carpi Carpi Carpi 17 '0 2012 II:28
30 10 2011 01 :18
2t '03 2012 05.31
17 10 2010 08 :19
Irt3j3ot Ndulo.
NombeConvertirNumeoLara bas
Abr
Fig .
Ingrese a l editor VBA (Alt + F 11) y abra el cdigo del mdulo 1, l uego
seleccione en cua lquier l ugar dentro de la Function Doble (Fig.229).
En la pa rte su perior de la Iista de objetos hay dos cuad ros desplega bles. Haga
clic en la pa rte su perior y seleccione "VBAProject ". (Fig . 230) .
Examinador de objetos
Ahora debe tener todos los mdulos y objetos g lobales que se muestran en el
cuadro "Clases", situado en la parte inferior del Objeto browser.
Clases
! b
@ H0j1
Public Function 0oble(nro As .' ntege)
\/Dr definir in
Ocultar
aneJar
Ahora se utilizar el mtodo poco conocido. Esto se hace mejor antes de escribir
el UDF.
Detalle de la Descripcin
de la funcin Doble.
bt
acrooptions
Macro:
-"NombreFuncinPersonalizada",
Category: = 3
Fecha y hora.
4
S
Estadstica.
Bsqueda de referencia.
6
7
8
9
10
11
12
De base de datos.
Texto.
Logical.
Informacin.
13
14
se instala.
Rea l ice lo siguiente:
(General]
agrega UDF
5 uE agreg aUDF()
FACT FACT.DOBLE
oo
neo)
las condiciones de error que pueden surg ir cuando el prog rama se ejecuta .
La aplicacin deber efectuar tantos controles como sea posible durante la inicializacin
para ga rantizar que los errores de tiem po de ejecucin no se produzcan ms adelante.
En Excel, esto i ncluye ga rantiza r que los
Iibros
de
tra bajo
y hojas
de
tra bajo
requeridos est n presentes y que los nombres necesarios deben esta r definidos.
Programa Nacional de Informtica
Pgina 220
Pgina 221
cuando la aplicacin se inicia antes de que est en produccin, es decir operando con
datos reales, as no tomar mucho tiempo realizar las correcciones del caso.
Errores tpicos.
Los errores en genera l vienen en tres fuentes :
a. Error del com pilador, como va riables no declaradas que impiden que el
puede ejecuta r
el
objetivo debe ser evita r que los errores no controlados se den sin ser
administrados correctamente.
resolver
se
cierre,
se
control de errores para que el Excel no se cierre sino que muestre mensajes
que el usuario que est trabajando con la aplicacin sepa que est
ocurriendo al suceder algn imprevisto. (Fig. 237).
Mic iosoft Y is ual basic
La instruccin On Error.
El centro de control de errores en
Pgina 222
N = I/ 0
End If
asigna 1 a la variable N.
El tercer formato de On Error es
que debe transferi r la ejecucin a la l nea que indica la etiqueta. Cada vez
que ocurre un error, la ejecucin de cdigo inmediatamente va a la l nea
Exit Sub
veError:
Resume Next
End Sub
Error
se
la
On Error Goto
< label> : simplemente para sa ltarse Ineas. Por ejem plo, el siguiente cdigo no
funcionar
correctamente :
activo
error
se
prod uce, y por lo tanto el segu ndo error no es ejecutado por la instruccin On
Error.
La Declaracin Resume.
La declaracin Resume instruye VBA pa ra rean udar la ejecucin en un punto
especificado en el cdigo. Usted puede utilizar Resume slo en un bloque de
control de errores, y eua Iquier otro uso producir un error. Por otra parte,
de cdigo que provoc el error. En este caso, debe asegura rse de que el bloque de
control de errores sol ucione el problema que provoc el error inicial. De lo
contrario, el cdigo entra en un bucle sin fin, saltando entre la lnea de cdigo que
provoc el error y el bloque de control
activar una hoja de clcu lo que no existe. Esto provoca un error (9 - Su bndice
fuera de rango), y el cdigo salta al bloque de manejo de errores que genera la
hoja, corrige el problema, y rean uda la ejecucin en la lnea de cdigo
provoc el error.
End If
que
Debug. Print N
Exit Sub
ControleError :
Next
Exit Sub
ControlError:
Regresa a la l nea con la e tiqu eta Con tro 11 :
Resume Control1:
un error. Esta es una muy mala prctica de codificacin. Recuerde que el uso de
On Error Resume Next no es corregir los errores. Sim plemente los ignora .
DEPURACIN DE PROGRAMAS.
Uso del editor para depurar programas.
La ventana Inmediato.
La depuracin consiste en examinar y proba r partes del cdigo o pa rtes de la
aplicacin para identifica r los problemas que pueden ocurrir cuando alg uien est
usando su base de datos.
VBA ofrece tantas herram ientas como sea ve
posible para ayudar en esta ta rea .
La ventana Inmediato es un objeto que se
puede
m nto
" '"
y
i
d
. .
opu n
f7
"
El objeto Debug.
La ventana Inmediato es reconocida en el cdigo como la depuracin de
objetos.
Pa ra mostrar mediante prog ramacin una cadena, en la ventana Inmediato, el
objeto Debug proporciona el mtodo Print.
tal como una fecha, que se puede convertir fcilmente en una cadena.
Puntos de interrupcin.
Un punto de interrupcin es un va for en una l nea de cdigo que indica a VBA
detener la ejecucin inmediata mente antes de que la lnea de cdigo se ejecute.
La ejecucin de cdigo se coloca en lo que se denomina break mode (modo de
i nterrupcin). Cuando VBA est en modo de
i nterrupcin,
puede
introduci r
comandos en la ventana Inmediato para visua lizar o ca mbiar los va lores de las
variables.
Pa ra poner un punto de interrupcin (Tam bin se le refiere como punto de
quiebre, punto de ruptura) en una Inea de cdigo, puede hacerlo de 3 formas:
1. A la altura de la l nea actual, haga cl ic en borde izquierdo. (Fig 243).
2. Coloque el cursor en esa lnea y pulse la tecla F9.
3. Seleccione "Alternar punto de interrupcin" en el men Depuracin.
5 ub agre g aUDF()
EJ 5:L
244.
Pgina 230
Fig.
Cuando una lnea contiene un punto de qu iebre, se muestra con un fondo de color
ladrillo. Inmediatamente antes de esta l nea de cdigo sea ejecutada, aparecer
con un fondo ama rillo.
Recuerde, que cuando un punto de qu iebre es encontrado, la ejecucin de cdigo
est en pausa, pero esa lnea de cdigo no se ha ejecutado todava. No se pueden
coloca r puntos de interru pcin en las Ineas en blanco, lneas de comentario, o
lneas de declaracin de va ria bles (lneas con decla raciones Dim).
Despus de que un punto de ruptura es encontrado, puede rean udar la ejecucin
de cdigo normal pulsando FS o seleccionando "Conti nuar" en el men Ejecuta r,
o recorrer el cdigo Inea por lnea (ver ms abajo) . Tenga en cuenta que los
puntos de quiebre no se gua rdan en el a rchivo del libro. Si cierra el archivo, todos
los puntos de qu iebre son removidos. Los puntos de interrupcin se conservan
siem pre que el a rchivo est a bierto.
el cdigo lnea por lnea, observando la accin de cada lnea de cdigo. Esto
hace que sea fcil determinar exactamente qu lnea est causando un
comportamiento incorrecto. Usted puede recorrer el cdigo l nea por l nea
pulsando la tecla F8 para inicia r el procedim iento en donde se encuentra el
cursor, o cuando VBA se detuvo en un punto de quiebre. AI presionar F8 hace
que VBA ejecute lnea por lnea, poniendo de relieve la siguiente lnea de
cdigo en amarillo. Tenga en cuenta que
Ventana Locales.
La ventana Locales muestran todas las variables de un procedi miento (asf como
las variables globales declaradas a nivel de proyecto o mdulo) y sus va lores. Esto
hace que sea fcil ver exactamente que va for tiene cada variable, y donde
ca mbia, como es su paso a travs del cdigo. Puede visua liza r la ventana local
seleccionndola en el men Ver.
La ventana Iocal no perm ite cam biar los valores de las
muestra los nom bres y los va lores. La Ventana Loca l se muestra en la Fig. 245.
Tenga en cuenta que las va viables x1 e y1 en el Procedimiento de prueba se
muestran en la ventana. La lnea resaltada en amarillo es la lnea actua l de
ejecucin - es la siguiente Inea de cdigo VBA que se ejecuta r .
(General)
Ventana de Inspeccin.
La ventana de inspeccin le perm ite "ver" una varia ble o expresin especfica y
ca usa la ejecucin de cdigo pa ra hacer una pa usa y entrar al modo de
i nterrupcin cuando el va for de esa variable o expresin es verdadera
(distinta de
Pgina 232
mostrar
la
ventana
Agrega r inspeccin
(Fig.
246),
que
se
muestra
continuacin.
Agregar inspeccin
Ayuda
Mdulo:
Tipo de nspecon
Tipo de inspeccin.
Tipo de inspecan
esn de inspecan
Julpai Servicios de
Consultora
Empleados
56.20
95947 Claudia
Solar '
35.20
g08S0 LindaRosales
60485 Chiroque
Mia
Flores Angeles
Castro
65.45
47490 Kiara 30608 Mi li 26846 Juan
48.25
39.40
26.80
Fecha Final
iii
i.
rf e
Si usted slo tiene que crear una etiqueta y su mensaje como este, su
procedimiento podra siempre ejecutar:
Private Sub cmdCa lcula r Click ()
Dim PagoHora As Double, Hora riosemanal As Double
Dim PagoSemanal As Double
CDbl (txtHorarioSemanal)
como sigue:
En caso de error.
Hay_un_error_de_Calculo:
bt sgBox " Hubo un problema al realizar el clculo"
End Sub
10 :
MsgBox "Hubo un problema al realizar el clculo"
End Sub
etiqueta
Click ()
On Error GoTo 0
Dim PagoHora As Double, HorarioSemana l As Double
Una vez que se haya determinado la codificacin del error, para reanudar el flujo
norma l del programa, se utiliza el operador Resume.
Ejemplo :
Hay_un_error_de_Calculo:
MsgBox "Hubo un problema al realizar el clculo"
End Sub
Tenga en cuenta que puede escribir el operador Resume en casi cualqu ier l ugar.
Pgina 240
Exit Sub
Hay_un_error_de_Calculo:
Msg Box "Hu bo un problema al rea lizar el c lculo"
Resume Next
End Sub
Hay_un_error_de_Calculo:
Msg Box "Hu bo un problema al rea lizar el c lculo"
PagoSemanal=0
Resume Next
End Sub
Si hay muchas va ria bles involucradas, como es en este caso, se puede inicializar
cada una.
Ejemplo:
Private Sub cmdCa lcuIar_Cl ick ()
On Error GoTo Ha'y_u n_error_de_CaIcu lo:
Hay_un_error_de_Calculo:
Msg Box "Hu bo un problema al realizar el clculo"
PagoSemanal =0
HorarioSemanal - 0
Resume Next
End Sub
Tipos de error.
No solo el control de errores se refiere a la anticipacin de los inconvenientes
de los problemas relacionados con los clculos aritmticos. En realidad, un progra
ma puede hacer frente a las diversas categoras de ocurrencias de error. Los
Errores de sintaxis.
Un error de sintaxis se produce si el cd igo intenta rea l iza r una operacin que el
leng uaje VBA no permite. Estos errores son proba blemente los ms fciles de
loca lizar porque el Editor de cdigo est configurado pa ra seala r en el momento
que usted est escribiendo el cdigo.
Si intenta escrib r o tratar de
inserta r un
operador
pa la bra
en
el
Iugar
Pgina 242
Fig .
f''o deromp'1an:
sintaxis. Por ejem plo, si est creando una expresin aritmtica binaria que espera
un segu ndo operando despus del operador, usted recibir un error. Aqu f est un
ejemplo (Fig. 253) :
En este caso, el progra mador pu Isa Enter despus del Mod, como si la expresin
estuviera completa. Esto da como resultado un error.
Estos son slo alg unos tipos de errores de si ntaxis que pueden a parecer. Como se
ha visto ya, si se tra baja en Microsoft Visua l Basic para escribir el
cd igo,
la
Por ejemplo, puede crear una aplicacin de alquiler de autos que es capaz de
mostrar imgenes al 100% del tiempo en su computadora con acceso desde la
unidad E: . Sin prestar atencin, despus de distribuir la aplicacin, puede que el
equipo del usuario no cuente con una unidad E: y, cuando se trata de mostra r las
imgenes, la aplicacin puede falla r.
un valor Double).
despus de que la aplicacin est lista, algunos de estos errores puede ser
difcil de identificar. Algunos otros errores dependen de la plataforma que se est
ejecutando la aplicacin (el sistema operativo, el procesador, la versin de la
aplicacin, la memoria (disponible), etc).
El objeto Err.
Pa ra ayuda r con el manejo de errores, el lenguaje Visual
clase Ilamada Err .No se tiene que decla rar una variable de esta clase.
Un Err objeto est disponible tan pronto como se comienza a trabaja r en el cdigo
VBA y se puede acceder di rectamente a sus miem bros.
El nmero de error.
Existen va rios tipos de errores que se pueden prod ucir en un prog rama. Pa ra
ayudarle en la identificacin de ellos, el Err objeto est equ ipado con una
propiedad denominada Number. Esta propiedad tiene un nmero especfico pa ra
la mayora de los errores que se pueden produci r en un progra ma . Cuando el
Pgina 245
Como se puede ver, en estos dos casos a l ejecutar el formu Iario se detectan dos
errores en tiempo de compilacin :
I. Error de sintaxis, se escri bi com llas dobles en I ugar de com llas sim ples.
Debido a que hay muchos tipos de errores, tam bin hay muchos nmeros, hasta
el punto de que no puede revisar todos ellos. Cuando se ejecuta un prog ra
ma, para saber qu tipo de error, se ut liza la propiedad Number del objeto Err.
En el siguiente ejemplo se muestra el nmero de error y de que se trata y se
muestra en un cuadro de texto. Se tiene el sig uiente formu Iario (Fig. 256).
(Cuatro y la letra 0
. .
.p:u:. .p.:o:
t:iva e Sub crdca1cula:_Ciick{)
Cn B-inr GoTc 3a,_.n_e--o r_de _&a1c lo:
Dix t agodsra je Ooucle, Horariodemar.ar je Dsutle
Din Fago6enanal je Le.rie
' a .e..a. - . c a s r .ede z z
-.
:
, a
it
1. :
.-_error_de_Oa1cuIo:
:+sgox "ubo un problema al realizar er calculo. & _
zh?rif & Erzor '1-o. rr. tcr z a
Lii.Descripzio-.
Fagoseraza. - ?
..o raric8er.a al - ?
progra ma
se
Caiga, sino que hace sa ber del error ocurrido y Iuego calcu la el PagoSemana l ,
ha biendo asig nado 0 (Cero) a las variables involucaradas.
Pago Hra
Fig . 261 Resu ltado del Pago Semanal con control del Error
Otro formato pa ra el control del error sera el sigu iente:
Hay_un_error_de_Calculo:
If Err. Number - 13 Then
HorarioSemanal = 0
Resume Next
End If
End Sub
En este caso se muestra el mensaje como sig ue (Fig. 262) :
El mensaje de error.
Como ya se ha mencionado, hay muchos errores y por lo tanto muchos
nmeros en poder de la propiedad Nmero del objeto Err. En consecuencia, el
hecho de sa ber un nmero de error puede ser vago. Para ayudarle a descifrar
un error, el objeto error proporciona una propiedad denominada Descripction.
Hay_u n_error_de_Calculo:
If Err.Number - 13 Then
Msg Box Err.Description
Pgina 250
PagoSemanal - 0
HorarioSemanal - 0
Resume Next
End If
End Sub
suficientemente explcito,
End Sub
escriba
el
btnAceptarHorarios CIick.
4. Haga cl ic en Nuevo.
Esta s va ria bles rep resen tan el tiempo de tra bajado de la hoja Hora rios
Sabado As Double
Fechalnicio
Pgina 252
FilaActiva = Fi laActiva + 1
y com p ruebe el reg istro sig uiente
Conti nua r hasta los sig uientes 93 registros
Loop While FilaActiva < = 93
Si encuentra un probl ema, salga de este p roced i miento
Exit Sub
btnAceptarHorarios_Error:
Si hubo u n erro r, compru ebe qu ti po de error qu e era ,
Si el error es 13, sig nifica que el usua rio ha i ntroducido un valor i ncorrecto .
'Se muestra a l usa rio el error
If Err.Number = 13 Then
8. Para aceptar los datos de los Hora rios haga clic en el botn [Acepta r Horarios].
(Fig. 264)
Angeles. ffi
Nombre:
Fecha inicio: 05 1 1 20 1 2
Lu nes
Semana 1
Semana 2
Iartes
3 OO
600
3 00
6 50
Iircoles
Juev-es
%.0,
8OOM
Aceptar Horarios
Compilar mdulos.
Las aplicaciones de oficina se crean de ta l manera que pueda resolver
requerim ientos con cosas llamadas "objetos" que pueden recibir instrucciones
mediante el uso de cdigo de VBA. Se envan instrucciones a va rios objetos d e
la aplicacin para hacer lo que le indicar que hagan . Compila r el proyecto VBA le
ayudar a detectar errores de sintaxis en el prog rama pa ra que pueda correg
irlos antes de hacer un lanzam iento.
Entonces, la compilacin convierte el cdigo escrito en el VBE en el cdigo que
puede ser ledo por Wi ndows.
1. Inicie Microsoft Office Excel, haga cl ic en la ficha "Progra mador" y haga clic en
"Visual Basic" para mostrar la ventana del editor de VBA. Haga clic en el men
"Insert:ar" y haga clic en "md ulos" pa ra inserta r un nuevo mdulo de cdigo.
2. Crear u n n uevo procedimiento Su b:
Private Sub compi leVBA ()
compi la el cdigo :
On Error GoT Err com pileVBA:
4. Ag regue el sigu iente cdigo pa ra mostra r una va riable de cadena con cuad
ro de mensaje:
captura r
Exit Sub
Err_compiIeVBA :
el
7.
Optimizacin de VBA.
Esta pgina enumera algunas sugerencias y estrategias para optimizar la
aplicacin de Visual Basic pa ra Aplicaciones (VBA), pa ra que se ejecute ms
rpido. Hay pocas reglas absol utas para optim iza r VBA, pero logran mejora r
el rendimiento mediante la racionalizacin de la lgica bsica.
VBA permite referirse a las celdas con [AI] en lugar de Range ("AI"). Mientras
que la sintaxis [AI] es ms fcil de escribir, se ejecutar ms lento de que la
sintaxis Range ("AI").
Modo de clculo.
Norma l mente, Excel volver a calcu lar una celda o un rango de celdas cuando
las celdas precedentes han cam biado. Esto puede hacer que el libro recalcule con
demasiada frecuencia, que se ralentizar el rend miento.
Usted
puede
evitar
que
Excel no actua liza los valores de las celdas. Si la macro se basa en un valor de
celda actualizada, debe forza r el evento Ca lcula r, con el mtodo . Calculate,
que
se
puede
aplica
tanto
un
rango
especfico
En
general,
el
mtodo
del
nmero
de
ndice
(Worksheets
(2))
es
Constantes.
Siempre que pueda, declare valores como constantes, en luga r de variables. Ya
que nunca cambian sus valores, se eva Ian slo una vez cuando el cdigo es
com pilado, en luga r de cada vez que se utilizan en tiem po de ejecucin.
Vinculacin anticipada.
Est estrechamente vincu Iado con la Declaracin especfica Tipo de objeto.
usted va a trabaja r con otra aplicacin, como Word, declarar
el
objeto
Si
OLE
directa mente, en Iugar de una variable de tipo Object. De esta manera, una g ran
cantidad de recursos se rea l iza en tiem po de com pilacin
("Binding Early") en
Next ch
Dim i as 1 nteoer
For i = 1 To Worksheets.Count
MsgBox Worksheets(i). Name
Next i
La actualizacin de pantalla.
Puede desactivar la actua l izacin de pantalla pa ra que Excel no
actualice la
= FALSE
AI referirse
directamente a MisCeldas,
VBA puede
acceder al objeto
Iugar,
Esto es especialmente cierto con las variables de ndice en los bucles For Next, ya
que un tipo Variant tiene que ser re-eva l uado cada iteracin del bucle.
Pgina 2 6 1
Funciones tiles.
A continuacin se presentan un g rupo de fu nciones tiles con cdigo VBA,
funcionales y muy tiles. Sim plemente copia r el cdigo y pegano en el mdulo
que se requiera.
RangeNameExists,
existe.
La fu ncin ArchivoExiste.
Function
La fu ncin SolamenteNombreArchivo.
SolamenteNombreArchivo - temp
Exit Function
End If
Next i
SolamenteNombreArchivo = pnombre
End Function
La funcin RutaExiste.
Dim x As String
On Error Resume Next
x = GetAttr(pnombre) And 0
If Err - 0 Then Ruta Existe True Else Ruta Existe = False
End Function
Pgina 263
La fu ncin NombreRangoExiste.
End If
Next n
End Function
La fu ncin HojaExiste.
La funcin LibroEstaAbierto.
Ca
Desarrollo de
Aplicaciones.
Apl icacin I: Registro de Postu tantes.
9 Apl icacin II: Calendario Posta I.
Pgina 265
Desarrollo de Aplicaciones.
Crea r aplicaciones persona lizadas, es una la bor que demanda tiempo y esfuerzo, poner
a punto las aplicaciones de acuerdo a los requerimientos de los usuarios es sacrificada y
a la vez placentera de poder atender todo lo que se solicita y estar muy complacido
Salir de Excel
puesto laboral.
Se tienen 3 reas de postulacin:
a. Gastronoma.
b. Soldad ura.
c. Maquinaria pesada.
El sistema debe genera r los cdigos de cada rea :
rea
Cdigo
Gastronoma
Gst
Soldadura
Sld
MP
2. Datos.
3. Estadsticas.
Fig. 268
La hoja de las
estad sticas.
(Fig. 269).
datos es el siguiente.
(Fig. 270).
Db introducir un nombre.
Fig.
Ezr
Rango
Erm n:a
_Celdas()
UlzimaFila As long, n As Lcng cg, cs, cr. s Jong
S:eeos{"Darcs").Acnivaze
Ulir.aFila = Cella(6SSS6, i).E:.d(lp).Row
Pgina 270
Se tienen 4 hojas:
a. Calendario btensual: Los detalles del mes actual.
b. bJini Calendario: La configuracin de los meses.
c. Pies: Las imgenes que requiere el calendario.
d. Cale: La configuracin del mes actual.
En la imagen se muestran las hojas:
Calendario Mensual
N1ini Calendario
Pies
Cale
Pgina 272
. ForeCoIor.Ti ntAndShade = 0
. ForeColor. Brightness = -0. 150000006
.Transpa rency - 0
.Solid
End With
.Transparency = 0
.Solid
End With
Application. ScreenUpdating = True
Application. DisplayAlerts = True
End Sub
Sub printAll()
'Genera un ca lendario en Formato PDF de los 12 meses
Dim cMonth As Integer
For cMonth = 1 To 12
xlTypePDF,
Centro de Reparaciones
ti o m t re.
i:'
11
:udad
onmaoioo del auio
Pieza #
Stock de Piezas.
Nomlre de la Piea
Se tiene una base de datos de las piezas que son de ms frecuente uso en las
repa raciones. En la imagen sigu iente se muestra una pa rte de los datos:
Usted debe desarrollar lo necesa rio pa ra cada una de los sig uientes requerimientos:
a. Registro de datos: Debe Prepa ra r un formulario para el registro de los datos