visual basic para excel

Upload: rafdil-amaro

Post on 16-Oct-2015

27 views

Category:

Documents


1 download

TRANSCRIPT

  • UNIVERSIDADNACIONALDECOLOMBIA

    SEDEDEMEDELLN______________________________

    FACULTADNACIONALDEMINASEscueladeSistemas

    OBJETIVOS:

    General:EstudiaryutilizarloselementosdelentornodetrabajoVisualBasicforApplications(VBA)desdeMicrosoftExcel.

    Especficos: (a) Entender y Aplicar el concepto de ambiente de trabajo para el diseo deaplicaciones, con sus componentes bsicos: men principal, barra de herramientas, caja decontroles,exploradordeproyectos,ventanadepropiedades,formulariobasedediseo.(b)Disearuna 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:

  • EnlasiguienteanteriorsemuestranloscomponentesprincipalesdelentornodediseodeaplicacionesdeVisualBasicforApplications(VBA).AlgunasoperacionestpicasconelentornodedesarrolloenVBAson: Ocultar/Visualizar diversos componentes como a caja de controles, la barra de herramientas, laventanadepropiedades,laventanaexploradoradeproyectos(exploradordeproyectos),elformulario.Ubicarcontrolessobreelformulariodediseo.Establecerpropiedadesalformularioyalosdiversoscontrolesubicadossobrel. Asociar programas (procedimientos, subprogramas, rutinas, funciones) con los diversos controles(objetos)queaslorequieran.EJERCICIO1:El ndice deMasa Corporal IMC de una persona puede calcularse demanera sencillamediante lasiguientefrmula: ( )

    ( )metrosenalturakgsenpesoIMC 2=

    Asporejemplo,unapersonaquepese65kgs.ymida1.72mts.tendraunIMCde21.97(65/1.722)DesarrollarunproyectoenVBAparacalcularestevalor.SOLUCIN:ActivarelentornodetrabajoExcelVBAenExcel2003(XP)SienvezdetenerinstaladoelWindowsVistaconsurespectivoOfficesetienelaversinanterior(Office2003)sedebeprocederdelasiguientemanera.PrimerodebepermitrselealExcelejecutarmacros,paraestoiraHerramientasMacroSeguridadcomosemuestraenlaFigura1.6.

  • LuegodondediceNiveldeseguridaddebeseleccionarseMediooBajocomosemuestraen laFigura1.7.EnelprimercasoaparecerunaventanadeconfirmacincadavezqueseabraelarchivodeExcelcorrespondiente para determinar si efectivamente se desea habilitar lasmacros. En el segundo casotodas lasmacrospodrnserejecutadassinconfirmacinprevia.ComoestapropiedaddeseguridadnosedefineparaunarchivoenparticularsinoparatodoelExcelengeneral,serecomiendaseleccionarlaopcinMedioparaevitarqueotrasmacrosexternaspuedanhaceralgunaoperacinnodeseada.

    ActivarelentornodetrabajoExcelVBAenExcel2007(Vista)Paraactivarelentornode trabajoExcelVBA si se tiene instaladoelWindowsVista con su respectivoOfficesimplementedesde labarrade tareashagaclicen INICIOy luegoenMicrosoftOfficeExcel1 (esposiblequeprimerosetengaqueubicarelpunterodelmouseenMicrosoftOffice,dependiendode lamquinaenlacualseesttrabajando).AparecerlaventanaoescritorioprincipaldeExcel.Porejemplo,enlafigurasiguientesemuestraelescritorioprincipaldeExcel2007(versinenespaol).LaflecharojasealalaopcinyelconodeVisualBasic,dentrodelaficha(pestaaolengeta)llamadaProgramador.

    1Microsoft Office, Microsoft Office Excel son marcas registradas de Microsoft Corporation (http://www.microsoft.com/spanish/)

  • EstafichaseactivahaciendoclicenelbotndeWindows(fechaverde)yhaciendodenuevoclicen lapestaaOpcionesdeExcel(parteinferiordelafigura1.4,pginasiguiente),sealaconlaflecharoja.AlhacerclicenlapestaaOpcionesdeExcelsellegaalpaneldedilogomostradoenlafigura1.5.Allsedebeactivar laopcinMostrarfichaProgramadoren lacintadeopciones.Apartirdeestaactivacin,siempresemostrarlafichaProgramador,apartirdelacualseaccesaelentornodeVBA.Sinembargo,independientementedesilafichaProgramadorestonoactivada,siempreesposiblellegaralentornoVBApulsandolasteclasAltF11alavez(sostengalateclaAltypulselateclaF11).

  • ElaborarelproyectoenVBAUnavezsedefineelniveldeseguridadapropiado (slosedebehacerunavezenelequiposiempreycuandoluegonosecambieestaconfiguracin)sepuedeprocederacrearelproyectoenVBA.ParaestoSeseleccionaHerramientasmacroEditordeVisualBasiccomosemuestraenlaFigura1.8.Unaformaabreviadadehaceresto,aligualqueenExcel2007esoprimirlasteclasAlt+F11.

  • Luego de entrar al entorno de programacin VBA se puede iniciar diseando la Interfaz delUsuariodandoclicderechoenelproyectoyseleccionando InsertarUserForm,comosemuestraen laFigura1.9.

    Unavezhechoestoaparecerunaventana(formoformulario)enblancocomosemuestraenlapartederechadelaFigura1.10.Tambindebeaparecerelcuadrodeherramientas(quesemuestraenlaparteizquierdadelamismafigura)dondeseencuentranloscontrolestpicosparadesarrollarunainterfaz.Laexplicacindecadaunosepresentaacontinuacin.

    Control DescripcinFormulario(form) Correspondealformulario(ventana)ensEtiqueta(label) Sirve generalmente para agregar texto a manera de ttulos,

    anotaciones,etc.Cuadro de texto(textbox)

    Sirve generalmentepara lasoperacionesde lectura/escriturade lasvariablesdeentradaysalidarespectivamente

    Botn (commandbutton)

    Sirvepararealizaralgunaoperacinbienseadelecturaoescrituradedatos,detransformacin,ocualquiercombinacindeestas

    Marco(frame) Puede servir para disear el formulario de manera ordenadasubdividiendo laventanatotalendiferentessecciones.Porejemplo:seccin de lectura de variables de entrada, seccin de escritura devariablesde salida, seccin deoperaciones (botones). Lautilizacindeestecontrolesopcional.

  • Tngaseencuentaque cualquieradeestoscontroles tieneuna seriedepropiedadesquepueden sermodificadasusandolaventanadepropiedadesquesalealdarleclicderechoalcontrolqueseagreguealformulario y seleccionando propiedades, o mediante la opcin Ver Ventana de propiedades (oabreviadocomoF4)ysealandoelcontrolcorrespondiente (el formularioensmismoes tambinuncontrol con propiedades propias). De cualquiera de las dos formas debe aparecer la ventana depropiedades para el control seleccionado como se muestra en la Figura 1.11 (en este caso laspropiedadescorrespondenauncontroltipolabelquesedescribiracontinuacin).

    Propiedad Descripcin(Name) Identificador nico que tendr el control dentro del proyecto. Se

    recomiendautilizarnombresmnemotcnicosqueconsideren tantoel tipode control como la funcin asociada (por ejemplo botonAceptar,textoResultados,etiquetaTitulo,etc.)

    Backcolor ColordefondoCaption Textodelcontrol,aplicaparatodosloscontrolesexceptoparaelcuadrode

    textoFont Propiedadesdeltexto:tipodeletra,tamao,estilosyefectosForecolor ColordeltextoText Textoqueapareceenelcontrolcuadrodetexto

    *Nota:Estaspropiedadespuedenserdefinidastantoentiempodediseo(comoenestosejemplos)oentiempodeejecucin(demaneradinmica)alinteractuarconelusuario.

  • TeniendoencuentaloanterioresfcildisearunainterfazparaelproblemaplanteadocomosemuestraenlaFigura1.12.

  • Una vezdefinida la interfaz seprocede apasar el algoritmo al cdigo correspondiente enVBA. Parahaceresto sepuede seleccionarVerCdigo (oabreviado comoF7)odandodoble clicen cualquierpartedelformulario.

    ComoelVBAesunentornodeprogramacinestructuradobasadoeneventos (ciertasoperacionessellevanacabocuandociertoeventoocurresobreuncontrol)elcdigosedistribuyecomosemuestraenlafigura1.13.Asporejemplo,aldardobleclicenelcontrolbotonCalcularapareceraenelentornodeprogramacinelcursorsituadoalinteriorde:

    marcoEntrada

    marcoResultados

    marcoOpciones

    botonCalcular botonSalir

    etiquetaPeso

    etiquetaEstatura

    etiquetaIMC

    textoPeso

    textoEstatura

    textoIMC

  • PrivateSubbotonCalcular_Clic() EndSubEstosignificaque loqueseescribaal interiordeesas instruccionesser loqueseejecutaracuandoalcorrer el programa se de clic sobre el botn Calcular. Ntese que en esa instruccin aparecebotonCalcular_Clic()ynoCalcular_Clic()pueselnombredelcontrol(quesedefiniconlapropiedadName)esbotonCalcularmientrasqueCalcularessimplemente loqueapareceenpantalla.Enestecaso lo que se debe ejecutar es precisamente lo que estamos buscando con este algoritmo que escalcularelIMCdeunapersona.Sihiciramoseldiagramadecajarespectivodeesteproblemaseraalgocomo:

    Que traducido a VBA es precisamente lo que aparece en la parte superior de la Figura 1.13 parabotonCalcular. Es necesario recordar que TODAS las variables (las de entrada, las de salida y lasintermedias) que se utilicen en el cdigo deben ser declaradas, esto con el fin que el lenguaje deprogramacinsepadequtipodedatosescadauna.UnlistadodecmosedeclaranenVBAlostiposdedatosmsimportantesvistosenlaclasetericasepresentaacontinuacin:

    Tipodedato SintaxisenVBAEnteroCorto IntegerEnteroLargo LongRealSimple SingleRealDoble DoubleCadenadetexto StringLgico Boolean

    Luegodeladeclaracindevariablesaparece:peso=Val(textoPeso.Text)estatura=Val(textoEstatura.Text)Lascualesasignanvaloresalasvariablespesoyestaturarespectivamente,apartirdelodigitadoenlascorrespondientes cuadros de texto en tiempo de ejecucin. Con la funcin Val() se asigna el valornumricode lodigitado;sisedigitannmerosobviamente losvaloresasignadoscorrespondenaesosnmeros;sisedigitanletrasyotroscaracteres,seasignarcero.Luegoapareceelclculodelavariabledesalida:IMC=peso/(estatura^2)

    Leerpeso

    Leerestatura

    IMC=peso/estarura2

    MostarIMC

  • Yporltimoaparecelainstruccin:textoIMC.Text=IMC,queloquehaceesprecisamenteponeren lacajadetextotextoIMCelvalorcalculado.Como en la interfaz diseada tambin aparece un botn para salir, es necesario agregar el cdigocorrespondiente. En VBA la instruccin que se emplea para terminar un programa es End como semuestra en la parte inferior de la figura 1.13. En este caso como dicha instruccin se encuentra alinteriorde Private SubbotonSalir_Clic(), esto significa que cuando al ejecutar elprograma se de clicsobreesebotonelprogramaterminara(secerraralaventana).EJERCICIO2:Teniendoencuanta loaprendidohastaelmomento,realiceunproyectoenVBApara leerdosvaloresnumricos y tener la opcin de realizar sobre ellos las operaciones aritmticas bsicas. Una posibleinterfazsemuestraenlaFigura1.14.

    Ntesequeademsdelosbotonesparalas4operacionesaritmticasbsicasyelbotndesalir,haydosbotonesadicionales:LeerDatosyBorrarparahacerelprogramaunpocomscompleto.Comosemuestraen lapartemediade lafigura1.15elbotonBorrar lonicoquehaceesponerelcontenidodeloscuadrosdetextovacos.Paraesteproblemacomosetienenvariasynosolounaoperacin(adiferenciadelejercicioanterior)esconvenientehacerdoscosas:

    Primero, lasvariables(tantodeentradacomodesalida)nosedefinenal interiordelcdigodecadaoperacinsinodemanerageneralcomosemuestraenlapartesuperiorfigura1.15.Parahacer esto solo es necesario seleccionar en la ventana del cdigo la opcin General queaparecedeprimeraenlalengetaquesaleenlapartesuperiorizquierdadeesaventana.Loqueseescribaallaparecerapartede laprogramacinde loscontrolesysergeneralpara todosellos.Estosignificaquelasvariablesquesedeclarenall(aligualquecomoloestamoshaciendopara este ejercicio) sern comunes para todos los controles y por tanto no es necesariodeclararlasencadauno.

    Segundo,y tendiendoencuenta loanterior, la lecturade losdatosdeentradanosehaceencada operacin, si no que se tiene un botn especfico (botonLeer) para hacerlo como se

  • muestraenelsegundobloquepresentadoenlafigura1.15.Estosirveparanotenerquecopiarelmismocdigoentodoslosbotonesdeoperaciones.NtesequealfinalaparecelainstruccinMsgboxDatos leidos.Estasirveparaqueaparezcaunaventanade informacinconel textocorrespondiente.

    Nota:Unapstrofe(ocomillasimple)indicauncomentario.Loscomentariossonignoradosatiempodeejecucin; slo sirvenparaexplicar (documentar) ciertaspartesdeun cdigo como semuestra en laparte finalde la figura 1.15 (enbotonSalir).NormalmenteenVBA tales comentarios semuestranenverde(salvoquesecambielaconvencindecoloresdeleditor).Apartede ladefinicin (general)de variables yde losbotonesde LeerDatos, Borrar y Salir seencuentranlosbotonesparalas4operacionesbsicas.CadaunotendruncdigomuysimplecomoelquesemuestraamaneradeejemploparabotonSumaren lafigura1.15.LAnicaoperacinquetieneunarestriccinespecialesladedividir,puestoquesiBtomaelvalorde0nosepuederealizar(divisinindefinida).ParatenerencuentaestasituacinesposibleemplearlainstruccinSIDELOCONTRARIOFINSI,cuyatraduccinaVBAsepresentaenlafigura1.16

  • NteseenestecdigoquesiBesdiferentede0,laoperacinserealizanormalmenteyelresultadoseimprime,mientrasqueencasocontrario(siBescero)semostraraunmensajedeinformacinindicandolasituacin.