Programación en Excel

download Programación en Excel

of 12

Transcript of Programación en Excel

  • 8/18/2019 Programación en Excel

    1/12

    Programación en Excel

    1 ProgramaciónCon este curso queremos iniciar una serie que te acerque a las herramientas de que dispone Excel, para mejorar erendimiento de todos tus trabajos.

    Puede que programar hayas pensado que resulta una tarea muy complicada. Mi objetivo es demostrarte que, unahayas alcanzado el grado suficiente de confianza, estas herramientas te resultarn insustituibles para desarrollar tuExcel.!"delante con ello#

    1.1 Objetos Application, Workbook, WorkSheets, Range.$isual %asic es un entorno de programaci&n orientado a objetos. 'i te sirve de algo, la primera vez que o( esto, taqued) igual de perplejo. "l final he descubierto que es todo muy sencillo* En $isual %asic, tu programas todo lo querelacionado con lo que pasa con un objeto+ es decir, que si tienes un bot&n, puedes programar lo que pasa cuandoclic o doble clic o s&lo pasas el cursor por encima o pulsas el bot&n derecho del rat&n. Es decir, que a cada

    corresponden unos eventos -cosas que le pasan al objeto.Excel te facilita una jerarqu(a de objetos que te sirven para automati

    personalizar el trabajo diario. "s(, por ejemplo tenemos*•€€€€€€€€El objeto Application es el objeto superior y representaplicaci&n Excel.•€€€€€€€€El objeto WorkBook se refiere a los distintos libros abidentro de la aplicaci&n Excel. /epende del objeto "pplication.•€€€€€€€€El objeto WorkSheet es el conjunto de hojas de unlibro. /epende de un objeto 0or1%oo1.•€€€€€€€€El objeto Range se refier a una celda o a un rango de

    2ormalmente depende de un objeto 0or1'heet.

    En resumen un objeto "pplication puede contener varios 3ibros -0or1%oo1s, que contienen hojas -0or1'heets, qvez contienen otros objetos -por ejemplo 4ange.Para acceder al editor de $isual %asic selecciona en el men5 6erramientas 78 Macros 78 Editor de $isual %asic.

  • 8/18/2019 Programación en Excel

    2/12

    'e te abrir el editor de $isual %asic, en el que puedes observar diferentes ventanizquierda arriba la ventana con los distintos objetos del proyecto. /ebajo la ventanpropiedades del objeto seleccionado. " su derecha la ventana donde escribirs elprogramaci&n del objeto seleccionado.

    Puedes modificar o conocer las caracter(sticas de cada uno de estos objetos, acclas propieaes de los mismos.Por ejemplo para el objeto 4ange tienes las siguientes propiedades*•€€€€€€€€!al"e, contiene el valor de la celda -su contenido.•€€€€€€€€#ol"mn y Ro$, que contienen respectivamente los datos de la filacolumna que se corresponden con la celda.•€€€€€€€€%ont, que contiene la fuente de los caracteres que muestra la celdCourier, etc.9ambi)n puedes llevar a cabo acciones sobre los objetos que te facilita Excel. Caestas acciones recibe el nombre de m&toos.Por ejemplo para el objeto 4ange tienes los m)todos*•€€€€€€€€Acti'ate, hace activa una celda determinada, es decir, coloca el cufoco sobre ella.•€€€€€€€€#lear , borra el contenido de una celda o rango de celdas -los valor 

    contienen.•€€€€€€€€#op(, copia el contenido de la celda o rango de celdas en el porta

  • 8/18/2019 Programación en Excel

    3/12

    En los ejemplos que vers a continuaci&n irs conociendo nuevos objetos y nuevas funciones. 

    1.1.1 Pr)ctica 1. *rabajar con los objetos e ExcelEscribir un texto en la celda ":

    :. "bre Excel y guarda el libro actual como Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. >nserta un nuevo m&dulo* >nsertar < M&dulo en la barra de men5s del Editor de $isual %asic.?. En este m&dulo guardars los procedimientos que desarrolles en los ejemplos.@. >nserta un procedimiento* escribe 'ub Practica: dentro del m&dulo que has insertado y pulsa Enter.

    A. "utomticamente aparecer debajo End 'ub. En el espacio existente entre estas dos instrucciones escribirsdel procedimiento.B. Escribe 4ange-":.$alue D Esta es la Celda ":

    . Comprueba que si escribes solamente 4ange-":. $isual %asic te indicar las propiedades y m)todos queaplicar al objeto 4ange.F. $as a cambiar el contenido de la celda, cambiando la propiedad $alue -asignndole un nuevo valor. Gbservaseparar el objeto de su propiedad se utiliza la notaci&n punto -..

    :H.Ejecuta el procedimiento::.'it5a el cursor dentro del procedimiento. 'elecciona en la barra de men5s Ejecutar < Ejecutar 'ubIJserform. 9

    puedes hacer clic sobre el bot&n o pulsar la tecla K@.:;.Comprueba en la hoja Excel el resultado* $ers que en la celda ": ahora est el texto que has escrito* Esta e ":!Kelicidades, ya has programado tu primer procedimiento#

    1.1.+ Pr)ctica +. *rabajar con los objetos e Excel

    Escribir un texto en la celda ": utilizando la jerarqu(a completa de objetos

  • 8/18/2019 Programación en Excel

    4/12

    :. "bre Excel y el libro Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el m&dulo Modulo : si no estuviese abierto.?. >nserta un nuevo procedimiento* escribe 'ub Practica; dentro del m&dulo que has abierto y pulsa Enter.@. "utomticamente aparecer debajo End 'ub.A. Escribe 0or1'heets-;.4ange-":.$alue D Esta es la Celda ": de la hoja ; en el espacio que hay entre ''ub.B. "l escribir 0or1'heets-; delante te ests refiriendo a la celda ": de la hoja ;.. Ejecuta el procedimiento y comprueba los resultadosF. Escribe 0or1%oo1s-:.0or1'heets-=.4ange-":.$alue D Esta es la Celda ": de la hoja = del libro: en elque hay entre 'ub y End 'ub.:H."l escribir 0or1%oo1s-: delante te ests refiriendo a la celda ": de la hoja = del libro :.::.Ejecuta el procedimiento y comprueba los resultados:;.Escribe "pplication.0or1%oo1s-:.0or1'heets-=.4ange-":.$alue D Esta es la Celda ": de la hoja = del libr -jerarqu(a completa en el espacio entre 'ub y End 'ub.

    :=."l escribir "pplication delante utilizas la jerarqu(a completa de objetos Excel. Gbserva que en algunos casos nonecesario especificar todas las dependencias entre objetos de Excel. 3o que ocurre es que Excel utiliza objetos po "s(, si no especificas hoja, Excel supone que te refieres a la hoja activa+ si no especificas libro, se supone que te relibro activo, etc.

    1.1. Ejercicios:. Escribe un procedimiento que escriba hola en negrita en la celda %?.

    ;. >gual que el anterior pero que escribe el texto en un nuevo libro, en la 6oja=.1.+ *ipos e atos. -eclaración e 'ariablesCuando se programa, puede ser necesario almacenar informaci&n para su uso posterior en otra parte del programadispones de 'ariables en las que puedes guardar distintos tipos e atos.3os tipos de datos de que disponesson B(te, Boolean, nteger , /ong, #"rrenc(, Single, -o"ble, -ate, String, Object,!ariant -$ariant es el tipo depredeterminado.3os que ms se suelen utilizar son*•€€€€€€€€%oolean* $alor l&gico. '&lo tiene dos valores posibles, *r"e -verdadero o %alse -falso.•€€€€€€€€>nteger* 2um)rico entero•€€€€€€€€/ouble* 2um)rico de doble precisi&n•€€€€€€€€/ate* Kecha•€€€€€€€€'tring* Cadena de caracteres

    Para declarar una variable se utiliza la instrucci&n /im. 'u sintaxis e-0 variable AS tipo -/eclara variable la que sea7 del tipo el quecorresponda7Gbserva unos ejemplos en la imagen de la izquierda. 

    1.+.1 Pr)ctica . -eclaración e 'ariables'olicita por pantalla variables y establ)celas en distintas casillas

    :. "bri Excel y abre el libro Ejercicios de Programaci&n.

    ;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el m&dulo M&lulo : si no estuviese abierto.

  • 8/18/2019 Programación en Excel

    5/12

    ?. >nserta un nuevo procedimiento* escribe 'ub Practica= dentro del m&dulo que has abierto y pulsa Enter. "utomticamente aparecer debajo En S"b. Escribe el siguiente c&digo para el procedimiento*

    Un Comentario: $as a utilizar aqu( una funci&n muy 5til de $isual %asic, np"tBox -"bre un cuadro de dilogo, par des entrada a un valor de una variable.'i deseas una descripci&n completa de esta funci&n, consulta la ayuda.@. Ejecuta el procedimiento y comprueba los resultados.

    1.+.+ Ejercicios:. Pide por pantalla dos n5meros y asigna la suma a la casilla C?, declarando las variables que utilices.;. >gual que el anterior pero, al solicitar los n5meros, el primero ser :HH por defecto y el segundo ser :HHH4ecuadra el resultado.

    1. Option ExplicitEs conveniente para evitar escribir incorrectamente el nombre de una variable existente o para evitar confusiones ec&digo, utilizar la instrucci&n Option Explicit.

    Esta instrucci&n se usa en el m&dulo para forzar las declaraciones expl(citas de todas las variables en dicho m&dulque no las des por supuestas, sino que se tengan que declarar antes de comenzar.'i usas, la instrucci&n Option Explicit, )sta debe aparecer en un m&dulo antes de cualquier otro procedimiento.'i intentas usar un nombre de variable que no hayas declarado antes, te dar un error de compilaci&n.'i no usas la instrucci&n Option Explicit, todas las variables que no hayas declarado previamente, tendrn el tipomenos que el tipo de variable predeterminado est) especificado de otra manera.

    1. Sentencias conicionalesCon las sentencias condicionales, puedes controlar la ejecuci&n de un fragmento de c&digo en funci&n de si se cuuna condici&n, que hayas fijado previamente.3a sintaxis es la siguiente*2  condición *henLinstruccionesLElse2  condición-n *henLinstrucciones_elseif  ...LElseLinstrucciones_else

    En 2 

    1..1 Pr)ctica . Sentencias #onicionales

  • 8/18/2019 Programación en Excel

    6/12

    Establece distintos colores seg5n el valor de una celda

    :. "bre Excel y el libro Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el m&dulo M&dulo: si no estuviese abierto.?. >nserta un nuevo procedimiento* escribe 'ub Practica? dentro del m&dulo que has abierto y pulsa Enter. "utomticamente aparecer debajo En S"b. Escribe el siguiente c&digo para el procedimiento*

    Un comentario: $as a utilizar el objeto Acti'eSheet para referirte expl(citamente a la hoja activa y la funci&n R3B p

    establecer el color de la fuente de la celda sobre la que trabajas.@. Prueba con distintos n5meros en las casillas ": y ";, ejecuta el procedimiento y comprueba los resultados.

    1..+ Ejercicios:. Escribe un procedimiento que escriba Mayor de :H o Menor de :H en la casilla ";, en funci&n de como seexistente en la celda ":.;. >gual que el anterior pero si el n5mero de la casilla ": es menor de H se pone el texto en rojo.

    1.4 B"cles'eguro que has pensado alguna vez, en c&mo repetir varias veces una misma acci&n, hasta que se cumpla una cohasta que hayas llegado a repetirla un n5mero determinado de veces. Para eso sirven los bucles.

    9odos los bucles necesitan una condici&n, que se debe cumplir, para que se produzca la siguiente repetici&n del bu

    6ay distintos tipos de bucles*•€€€€€€€€€-o.../oop* 'eguir en el bucle mientras o hasta una condici&n sea cierta -9rue.•€€€€€€€€€%or...5ext* Jtilizar un contador para ejecutar las instrucciones un n5mero determinado de veces.•€€€€€€€€€%or Each...5ext* 4epetici&n del grupo de instrucciones para cada uno de los objetos de una colec

    1.4.1 Pr)ctica 4. *rabajar con b"cles 1Mostrar en pantalla los n5meros del : al @

    :. "bre Excel y el libro Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el m&dulo M&dulo: si no estuviese abierto.?. >nserta un nuevo procedimiento* escribe 'ub Practica@ dentro del m&dulo que se ha abierto. "utoaparecer debajo En S"b.

    @. Escribir el siguiente c&digo para el procedimiento*

    Un comentario: $as a utilizar una funci&n muy 5til de $isual %asic, 0sgBox, que muestra un mensaje en un cuadrodilogo. 'i quieres obtener una descripci&n completa de esta funci&n consulta la ayuda.

  • 8/18/2019 Programación en Excel

    7/12

    A. Ejecuta el procedimiento y comprueba los resultados.

    1.4.+ Ejercicios:. Crea un procedimiento que pida por pantalla el nombre y la edad de = alumnos.;. >gual que el anterior pero insertando una fila de un color entre cada alumno.

    1.6 #omprener la a("a e !is"al Basic 70icroso2t Excel +88+9

    'i quieres acceder a la ayuda desde el editor de $isual %asic, s&lo necesitas pulsar la tecla K: para mostrar la ayurelacionada con la palabra en la que se encuentra el cursor.'i esta palabra es del lenguaje de $isual %asic aparece la ayuda de lo que es el lenguaje de programaci&n 5nicam'i la palabra sobre la que pulsamos K: est relacionada con los objetos de Excel, vers una ayuda diferente, en laprimer nodo de la solapa contenido es Re2erencia !is"al Basic e 0icroso2t Excel.Es interesante echar un vistazo a esta ayuda con especial atenci&n a los temas*•€€€€€€€€Objetos e 0icroso2t Excel. Contiene toda la ayuda relacionada con los objetos, propiedades y m)•€€€€€€€€#onceptos e programación. 3a ayuda te ofrece ejemplos generales interesantes que se puedendespu)s a un caso particular.6ay que tener en cuenta las siguientes consideraciones*

    •€€€€€€€€En la sintaxis de los ejemplos que vers en la ayuda, los argumentos de una funci&n o procedimient

    van entre corchetes son obligatorios. 3os que van entre corchetes son opcionales. 'i no deseas especificar alg5n aes necesario poner la coma que delimita ese argumento, es decir, dejar el espacio que le corresponde en blanco.Ejemplo*

    Msg%ox- prompt L, buttonsL, titleL, helpfile, context 

     

    Obligatorio Opcionales

    1.: Recorrer celas e "na hoja e c)lc"loJna operaci&n bastante habitual cuando se trabaja con Excel es el recorrido de grupos de celdas para llenarlas comirar su contenido, etc. 3os bucles son imprescindibles para recorrer grupos de celdas o rangos.Para realizar esta tarea son tambi)n de gran ayuda las siguientes propiedades*•€€€€€€€€Acti'e#ell; 2os proporciona la celda activa.Ejemplo* Escribe hola en la celda activa* "ctiveCell.$alue D hola•€€€€€€€€#ells; 'irve, como el objeto Range, para referenciar una casilla o rango de casillas, pero en lugar dreferencia de la forma ":, %:,... utiliza la fila y la columna que ocupa la casilla dentro de la hoja.Ejemplo* Poner hola en la casilla ": de la hoja activa* "ctive'heet.Cells-:,:.$alueD6ola•€€€€€€€€O22set; significa desplazamiento, es una propiedad del objeto Range y se utiliza para referenciar un

    situada a n Kilas y n Columnas de una casilla dada.Ejemplos* "ctive'heet.4ange-":.Gffset-;, ;.$alue D 6ola 4esultado* Casilla C= D 6ola, ; filas hacia abajo y ; columnasderecha desde ":. "ctiveCell.Gffset-=,:.$alue D 6ola 4esultado* = Kilas por debajo de la casilla "ctiva D 6ola "ctiveCell.Gffset-7;,?."ctivate 4esultado* "ctivar la casilla que est ; filas por encima y = columnas a la derecha d

    1.:.1 Pr)ctica 6. Recorrer celas e "na hoja 13lena el rango de las casillas ":.."@ con valores consecutivos empezando por el B.

    :. "bre Excel y el libro Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.

    =. "bre el m&dulo M&dulo: si no estuviese abierto.?. >nserta un nuevo procedimiento* escribe 'ub PracticaA dentro del m&dulo que se ha abierto y pulsa Enter.

  • 8/18/2019 Programación en Excel

    8/12

     "utomticamente aparecer debajo En S"b. Escribe el siguiente c&digo para el procedimiento*

    Un comentario: Jtilizars aqu( una prctica com5n en programaci&n* inicializar una variable -Fila e incrementar sudentro de un bucle.@. Ejecuta el procedimiento y comprueba los resultados.

    1.:.+ Pr)ctica :. Recorrer celas e "na hoja +3lenar el rango de las casillas ":.."@ con valores consecutivos empezando por el H.

    :. "bre Excel y el libro Ejercicios de Programaci&n.;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el m&dulo M&dulo: si no estuviese abierto.?. >nserta un nuevo procedimiento* escribe 'ub PracticaB dentro del m&dulo que se ha abierto y pulsa Enter.

     "utomticamente aparecer debajo En S"b. Escribec&digo para el procedimiento*Comentario: Gbserva que en la primera iteraci&n del budesplazamiento -offset  es cero y por tanto se rellena laJtilizars aqu( el m)todo Acti'ate para establecer la ccomo celda activa.@. Ejecuta el procedimiento y comprueba los resulta

    1.:. Pr)ctica nserta un nuevo procedimiento* escribe 'ub Practica dentro del m&dulo que se ha abierto y pulsa Enter. "utomticamente aparecer debajo En S"b. Escribe el siguiente c&digo para el procedimiento*

    Un comentario: En primer lugar se activa la 6oja: y se pon

    casilla activa la ":. "qu( utilizas un bucle del tipo hacer mientras se cumpla ucondici&n. En este caso la condici&n es que no este vac(activa. 9ener en cuenta que en este caso el bucle se cierra9ambi)n usas tambi)n la funci&n sEmpt( que sirve para csi una celda est vac(a.@. Ejecutar el procedimiento y comprobar los resultados

    1.:. Ejercicios:. 3ocalizar la primera celda vac(a. 'olicitar nombre y edad, y rellenar filas hasta que el nombre introducido este;. >gual que el anterior pero si la edad es mayor que :, solicitar el /2> e introducirlo en color azul en la celda cedad.

    1.< #reación ( "tili=ación e proceimientos'eguramente no te has dado cuenta, pero llevas practicando con procedimientos todo el tiempo.

  • 8/18/2019 Programación en Excel

    9/12

    Jn procedimiento es un bloque de instrucciones de c&digo que sirven para llevar a cabo alguna tarea espec(fica.Cada tarea la realizar un procedimiento y, si esta tarea implica la ejecuci&n de otras tareas, cada una se implemesolucionar en su correspondiente procedimiento de manera que cada uno haga una cosa concreta. "s(, los difereque se deben ejecutar para que un programa haga algo, quedaran bien definidos cada uno en su correspondienteprocedimiento. 'i el programa falla, fallar a partir de un procedimiento y de esta forma podremos localizar el errorrpidamente.3os procedimientos son tambi)n un eficaz mecanismo para evitar la repetici&n de c&digo en un mismo programa ediferentes programas.Sintaxis:

    S"b 2ombreNProcedimento'entencias.En S"b

    1.

  • 8/18/2019 Programación en Excel

    10/12

    Un comentario: 3a llamada al procedimiento buscaCasilla$acia rompe la secuencia del programa, que en ese puntlas instrucciones del procedimiento, y devuelve el control a la siguiente instrucci&n -nombre .@. Ejecuta el procedimiento y comprueba los resultados.

    1.

  • 8/18/2019 Programación en Excel

    11/12

    1.>.1 Pr)ctica 18. ?tili=ación e 2"nciones/evuelve la primera celda vac(a a partir de una celda que se pasa como parmetro

    :. "bre Excel y el libro Ejercicios de Programaci&n.

    ;. 'elecciona 6erramientas < Macro < Editor de $isual %asic en la barra de men5s de Excel.=. "bre el M&dulo: si no estuviese abierto.?. >nserta el c&digo que vers en la pgina siguiente*

    Un comentario: 6as pasado como parmetro la casilla inicial. Jtilizas la propiedad Aress que te devuelve la refela celda activa.@. 3lama a la funci&n desde un procedimiento y comprueba los resultados.

    1.>.+ Ejercicios:. Crea una funci&n que devuelva la celda que contenga un valor a partir de una casilla inicial.;. 6az un procedimiento que llame a la funci&n anterior y ponga la celda encontrada en color rojo.

    1.18 %"nciones e2inias por el "s"ario ese el asistente e 2"ncionesPuedes crear funciones tuyas desde el asistente, para utilizarlas posteriormente. Para ello debers*:. "brir Excel y el libro Ejercicios de Programaci&n.;. 'eleccionar >nsertar < Kunci&n en la barra de men5s de Excel.

  • 8/18/2019 Programación en Excel

    12/12

    =. 9e aparece el cuadro de dilogo >nsertar funci&n?. En seleccionar una categoría selecciona