Visual Basic para Excel
Visual Basic para Excel
SEDEDEMEDELLN
______________________________
FACULTADNACIONALDEMINAS
EscueladeSistemas
OBJETIVOS:
General: Estudiar y utilizarloselementosdelentornode trabajoVisual Basic forApplications (VBA)
desdeMicrosoftExcel.
Especficos: (a) Entender y Aplicar el concepto de ambiente de trabajo para el diseo de
aplicaciones, con sus componentes bsicos: men principal, barra de herramientas, caja de
controles,exploradordeproyectos,ventanadepropiedades,formulariobasedediseo.(b)Disear
una interfaz sencilla, manipulando los objetos (controles) del tipo: UserForm, Label, TextBox,
CommandButton, Image. (c) Reconocer y manejar los diferentes tiempos en un proyecto VBA:
diseo,ejecucin,depuracin.(d)Emplearladefinicin,lecturayescrituradevariablesenVBA.
ENTORNODEDISEOENVBA:
Enlasiguienteanteriorsemuestranloscomponentesprincipalesdelentornodediseodeaplicaciones
deVisualBasicforApplications(VBA).
AlgunasoperacionestpicasconelentornodedesarrolloenVBAson:
EJERCICIO1:
El ndice de Masa Corporal IMC de una persona puede calcularse de manera sencilla mediante la
siguientefrmula:
( )
( ) metros en altura
kgs en peso
IMC
2
=
Asporejemplo,unapersonaquepese65kgs.ymida1.72mts.tendraunIMCde21.97(65/1.72
2
)
DesarrollarunproyectoenVBAparacalcularestevalor.
SOLUCIN:
ActivarelentornodetrabajoExcelVBAenExcel2003(XP)
SienvezdetenerinstaladoelWindowsVistaconsurespectivoOfficesetienelaversinanterior(Office
2003)sedebeprocederdelasiguientemanera.PrimerodebepermitrselealExcelejecutarmacros,para
estoiraHerramientasMacroSeguridadcomosemuestraenlaFigura1.6.
Luego donde dice Nivel de seguridad debe seleccionarse Medio o Bajo como se muestra en la Figura
1.7.En el primercaso aparecer unaventanade confirmacincada vez queseabra el archivodeExcel
correspondiente para determinar si efectivamente se desea habilitar las macros. En el segundo caso
todas las macros podrn ser ejecutadas sin confirmacin previa. Como esta propiedad de seguridad no
sedefineparaunarchivoenparticularsinoparatodoelExcelengeneral,serecomiendaseleccionarla
opcinMedioparaevitarqueotrasmacrosexternaspuedanhaceralgunaoperacinnodeseada.
ActivarelentornodetrabajoExcelVBAenExcel2007(Vista)
Para activar el entorno de trabajo ExcelVBA si se tiene instalado el Windows Vista con su respectivo
Office simplemente desde la barra de tareas haga clic en INICIO y luego en Microsoft Office Excel
1
(es
posible que primero se tenga que ubicar el puntero del mouse en Microsoft Office, dependiendo de la
mquinaenlacualseesttrabajando).AparecerlaventanaoescritorioprincipaldeExcel.Porejemplo,
enlafigurasiguientesemuestraelescritorioprincipaldeExcel2007(versinenespaol).
LaflecharojasealalaopcinyelconodeVisualBasic,dentrodelaficha(pestaaolengeta)llamada
Programador.
1
Microsoft Office, Microsoft Office Excel son marcas registradas de Microsoft Corporation (http://www.microsoft.com/spanish/)
Esta ficha se activa haciendo clic en el botn de Windows (fecha verde) y haciendo de nuevo clic en la
pestaaOpcionesdeExcel(parteinferiordelafigura1.4,pginasiguiente),sealaconlaflecharoja.Al
hacerclicenlapestaaOpcionesdeExcelsellegaalpaneldedilogomostradoenlafigura1.5.Allse
debe activar la opcin Mostrar ficha Programador en la cinta de opciones. A partir de esta activacin,
siempresemostrarlafichaProgramador,apartirdelacualseaccesaelentornodeVBA.Sinembargo,
independientementedesilafichaProgramadorestonoactivada,siempreesposiblellegaralentorno
VBApulsandolasteclasAltF11alavez(sostengalateclaAltypulselateclaF11).
ElaborarelproyectoenVBA
Una vez se define el nivel de seguridad apropiado (slo se debe hacer una vez en el equipo siempre y
cuandoluegonosecambieestaconfiguracin)sepuedeprocederacrearelproyectoenVBA.Paraesto
SeseleccionaHerramientasmacroEditordeVisualBasiccomosemuestraenlaFigura1.8.Unaforma
abreviadadehaceresto,aligualqueenExcel2007esoprimirlasteclasAlt+F11.
Luego de entrar al entorno de programacin VBA se puede iniciar diseando la Interfaz del Usuario
dando clic derecho en el proyecto y seleccionando Insertar UserForm, como se muestra en la Figura
1.9.
Control Descripcin
Formulario(form) Correspondealformulario(ventana)ens
Etiqueta(label) Sirve generalmente para agregar texto a manera de ttulos,
anotaciones,etc.
Cuadro de texto
(textbox)
Sirve generalmente para las operaciones de lectura/escritura de las
variablesdeentradaysalidarespectivamente
Botn (command
button)
Sirvepararealizaralgunaoperacinbienseadelecturaoescriturade
datos,detransformacin,ocualquiercombinacindeestas
Marco(frame) Puede servir para disear el formulario de manera ordenada
subdividiendo la ventana total en diferentes secciones. Por ejemplo:
seccin de lectura de variables de entrada, seccin de escritura de
variables de salida, seccin de operaciones (botones). La utilizacin
deestecontrolesopcional.
Tngase en cuenta que cualquiera de estos controles tiene una serie de propiedades que pueden ser
modificadasusandolaventanadepropiedadesquesalealdarleclicderechoalcontrolqueseagregueal
formulario y seleccionando propiedades, o mediante la opcin Ver Ventana de propiedades (o
abreviado como F4) y sealando el control correspondiente (el formulario en s mismo es tambin un
control con propiedades propias). De cualquiera de las dos formas debe aparecer la ventana de
propiedades para el control seleccionado como se muestra en la Figura 1.11 (en este caso las
propiedadescorrespondenauncontroltipolabelquesedescribiracontinuacin).
Propiedad Descripcin
(Name) Identificador nico que tendr el control dentro del proyecto. Se
recomienda utilizar nombres mnemotcnicos que consideren tanto el tipo
de control como la funcin asociada (por ejemplo botonAceptar,
textoResultados,etiquetaTitulo,etc.)
Backcolor Colordefondo
Caption Textodelcontrol,aplicaparatodosloscontrolesexceptoparaelcuadrode
texto
Font Propiedadesdeltexto:tipodeletra,tamao,estilosyefectos
Forecolor Colordeltexto
Text Textoqueapareceenelcontrolcuadrodetexto
*Nota:Estaspropiedadespuedenserdefinidastantoentiempodediseo(comoenestosejemplos)oen
tiempodeejecucin(demaneradinmica)alinteractuarconelusuario.
Teniendoencuentaloanterioresfcildisearunainterfazparaelproblemaplanteadocomosemuestra
enlaFigura1.12.
Una vez definida la interfaz se procede a pasar el algoritmo al cdigo correspondiente en VBA. Para
hacer esto se puede seleccionar Ver Cdigo (o abreviado como F7) o dando doble clic en cualquier
partedelformulario.
marcoEntrada
marcoResultados
marcoOpciones
botonCalcular botonSalir
etiquetaPeso
etiquetaEstatura
etiquetaIMC
textoPeso
textoEstatura
textoIMC
PrivateSubbotonCalcular_Clic()
EndSub
Esto significa que lo que se escriba al interior de esas instrucciones ser lo que se ejecutara cuando al
correr el programa se de clic sobre el botn Calcular. Ntese que en esa instruccin aparece
botonCalcular_Clic()ynoCalcular_Clic()pueselnombredelcontrol(quesedefiniconlapropiedad
Name) es botonCalcular mientras que Calcular es simplemente lo que aparece en pantalla. En este
caso lo que se debe ejecutar es precisamente lo que estamos buscando con este algoritmo que es
calcularelIMCdeunapersona.Sihiciramoseldiagramadecajarespectivodeesteproblemaseraalgo
como:
Que traducido a VBA es precisamente lo que aparece en la parte superior de la Figura 1.13 para
botonCalcular. Es necesario recordar que TODAS las variables (las de entrada, las de salida y las
intermedias) que se utilicen en el cdigo deben ser declaradas, esto con el fin que el lenguaje de
programacinsepadequtipodedatosescadauna.UnlistadodecmosedeclaranenVBAlostiposde
datosmsimportantesvistosenlaclasetericasepresentaacontinuacin:
Tipodedato SintaxisenVBA
EnteroCorto Integer
EnteroLargo Long
RealSimple Single
RealDoble Double
Cadenadetexto String
Lgico Boolean
Luegodeladeclaracindevariablesaparece:
peso=Val(textoPeso.Text)
estatura=Val(textoEstatura.Text)
Lascualesasignanvaloresalasvariablespesoyestaturarespectivamente,apartirdelodigitadoenlas
correspondientes cuadros de texto en tiempo de ejecucin. Con la funcin Val() se asigna el valor
numrico de lo digitado; si se digitan nmeros obviamente los valores asignados corresponden a esos
nmeros;sisedigitanletrasyotroscaracteres,seasignarcero.
Luegoapareceelclculodelavariabledesalida:IMC=peso/(estatura^2)
Leerpeso
Leerestatura
IMC=peso/estarura
2
MostarIMC
Y porltimoaparecelainstruccin: textoIMC.Text=IMC,queloquehaceesprecisamente poneren la
cajadetextotextoIMCelvalorcalculado.
Como en la interfaz diseada tambin aparece un botn para salir, es necesario agregar el cdigo
correspondiente. En VBA la instruccin que se emplea para terminar un programa es End como se
muestra en la parte inferior de la figura 1.13. En este caso como dicha instruccin se encuentra al
interior de Private Sub botonSalir_Clic(), esto significa que cuando al ejecutar el programa se de clic
sobreesebotonelprogramaterminara(secerraralaventana).
EJERCICIO2:
Teniendo en cuanta lo aprendido hasta el momento, realice un proyecto en VBA para leer dos valores
numricos y tener la opcin de realizar sobre ellos las operaciones aritmticas bsicas. Una posible
interfazsemuestraenlaFigura1.14.
Ntesequeademsdelosbotonesparalas4operacionesaritmticasbsicasyelbotndesalir,haydos
botones adicionales: Leer Datos y Borrar para hacer el programa un poco ms completo. Como se
muestra en la parte media de la figura 1.15 el botonBorrar lo nico que haceesponer el contenidode
loscuadrosdetextovacos.
Paraesteproblemacomosetienenvariasynosolounaoperacin(adiferenciadelejercicioanterior)es
convenientehacerdoscosas:
Primero, las variables (tanto deentrada como de salida) no sedefinen al interior del cdigo de
cadaoperacinsinodemanerageneralcomosemuestraenlapartesuperiorfigura1.15.Para
hacer esto solo es necesario seleccionar en la ventana del cdigo la opcin General que
aparecedeprimeraenlalengetaquesaleenlapartesuperiorizquierdadeesaventana.Loque
se escriba all aparecer aparte de la programacin de los controles y ser general para todos
ellos.Estosignificaquelasvariablesquesedeclarenall(aligualquecomoloestamoshaciendo
para este ejercicio) sern comunes para todos los controles y por tanto no es necesario
declararlasencadauno.
Segundo, y tendiendo en cuenta lo anterior, la lectura de los datos de entrada no se hace en
cada operacin, si no que se tiene un botn especfico (botonLeer) para hacerlo como se
muestraenelsegundobloquepresentadoenlafigura1.15.Estosirveparanotenerquecopiar
elmismocdigoentodoslosbotonesdeoperaciones.Ntesequealfinalaparecelainstruccin
Msgbox Datos leidos. Esta sirve para que aparezca una ventana de informacin con el texto
correspondiente.
Nota:Unapstrofe(ocomillasimple)indicauncomentario.Loscomentariossonignoradosatiempode
ejecucin; slo sirven para explicar (documentar) ciertas partes de un cdigo como se muestra en la
parte final de la figura 1.15 (en botonSalir). Normalmente en VBA tales comentarios se muestran en
verde(salvoquesecambielaconvencindecoloresdeleditor).
Aparte de la definicin (general) de variables y de los botones de Leer Datos, Borrar y Salir se
encuentranlosbotonesparalas4operacionesbsicas.Cadaunotendruncdigomuysimplecomoel
que se muestra a manera de ejemplo para botonSumar en la figura 1.15. LA nica operacin que tiene
unarestriccinespecialesladedividir,puestoquesiBtomaelvalorde0nosepuederealizar(divisin
indefinida).ParatenerencuentaestasituacinesposibleemplearlainstruccinSIDELOCONTRARIO
FINSI,cuyatraduccinaVBAsepresentaenlafigura1.16
NteseenestecdigoquesiBesdiferentede0,laoperacinserealizanormalmenteyelresultadose
imprime,mientrasqueencasocontrario(siBescero)semostraraunmensajedeinformacinindicando
lasituacin.