Apuntes macros excel

5,305 views
5,144 views

Published on

Published in: Education
3 Comments
6 Likes
Statistics
Notes
  • Exelente documento. Claro y cobciso. Gracias.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • muy claro el material que colocas referente a VBA, me encantaria si pudieras compartir estos apuntes....yo programo en Excel pero a nibel basico solamente.

    Gracias
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • muchas gracias, me encanta programar en macros
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
5,305
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
3
Likes
6
Embeds 0
No embeds

No notes for slide

Apuntes macros excel

  1. 1. APUNTES DE MACROS
  2. 2. DATOEs todo representación de una entidad y que es susceptible de tratamiento ya sea en un programa o procesoinformático. Por ejemplo: nombre, apellido, precio, edad, valor unitario.Los datos por si solo no permiten la toma de decisiones (esto es posible cuando se tiene un grupo de datoscoherente).INFORMACIÓNConjunto de datos relacionados entre si, que de alguna forma permite la toma de decisiones. Soporta unanálisis.PROCESO DE DATOSCOMPUTADORMáquina capaz de aceptar datos de entrada, procesarlos y entregar resultados de salida (información).ESTRUCTURA GENERAL DE UN COMPUTADORALGORITMOLos algoritmos son procedimientos específicos que señalan paso a paso la solución de un problema y quegarantizan el logro de una solución.Un procedimientos algorítmico es una sucesión de acciones que hay que realizar, completamente prefijada. Sucorrecta ejecución lleva a una solución segura del problema.PROGRAMAConjunto de instrucciones escritas en un lenguaje de alto nivel (por ejemplo Visual Basic) que en una secuencialógica puede entregar un resultado esperado.Apuntes preparado por : Rebeca Cartagena Jessen 2CONCEPTOS GENERALESENTRADA(datos +instrucciones)Secuencia lógicade operacionesSALIDA(información)REGLAS
  3. 3. VARIABLESon elementos que contienen información que se encuentran almacenados en la memoria principaldel computador. Pueden contener información alfabética, numérica o alfanumérica. Las variablesdeben tener nombres nemotécnicos ( representativos a la información que se está almacenando ).Es necesario en un programa el uso de variables porque toda información debe tener unarepresentación en la memoria para luego poder utilizarla.EjemplosAREA=”RRHH” la variable Area tiene almacenado el valor RRHH, y esta información se encuentraen la memoria principal del computador y mientras no se apague esa información permanece.Suma=0 La variable suma, tiene un valor 0, este valor puede ir cambiando en la medida que seejecuta el programa donde se encuentra esta variable.DEFINICION : Se entiende por Macro a la automatización de aplicaciones que manipulan de una u otraforma una planilla electrónica. Uno de los puntos fuertes de la herramienta excel es su lenguaje para macros.AUTOMATIZACIÓNAunque Excel contiene dentro a Visual Basic, este lenguaje no tiene ningún vínculo especial que lo amarre aExcel. De hecho Excel utiliza una biblioteca de objetos a la cual se comunica Visual Basic.MACRO DE TECLADOUna primera aproximación a las macros son la creación de Macros de teclado. Estas consisten en Grabartodas las pulsaciones manuales que realizamos sobre una planilla y luego aplicamos esta secuenciasobre cualquier parte de ella.Estando en Excel:1. Activar la barra de herramientas de Visual Basic con:Menú VER - opción BARRA DE HERRAMIENTAS - opción VISUAL BASICApuntes preparado por : Rebeca Cartagena Jessen 3MACROS DE TECLADOEjecutar grabar reanudar editor de cuadro de modoMacro macro macro Visual Basic controles diseñoExcelLibrería deObjetosVisual Basic
  4. 4. 2. Hacer un clic en botón GRABAR MACRO. Se desplegará la siguiente ventana• En ella se debe indicar el nombre de la macro (por defecto es Macro1)• Método abreviado es para asociar la ejecución de una macro con pulsaciones deteclas (en este caso será siempre la tecla CTRL con otra). Se sugiere que la letraasociada sea mayúscula.• Guardar Macro en: es para definir si loa macro estará disponible sólo para el libroactual (por defecto) o para otros libros (opción macro personal).3. Realizar manualmente la operación requerida.4. Detener la grabación con el botónPROCESO PARA EJECUTAR LA MACRO1. Menú HERRAMIENTAS - opción MACRO - opción MACROS. Se desplegará la siguienteventana:Otras formas de Ejecutar una MacroPara realizar esta operación disponemos de tres formas: una por medio de los menús, la otra porun botón de la barra de herramientas y por último por el tecladoMétodo 11. Abra el menú Macro y seleccione la opción Macro... y seleccione el botón EjecutarMétodo 21. Realice un clic sobre el botón asignado a la macro desde la Barra de Herramientas.Método 3Apuntes preparado por : Rebeca Cartagena Jessen 4Elegir de la lista el nombre de la macroy luego el botón Ejecutar
  5. 5. 1. Pulse la tecla F5 o clic en el botón ejecutarEJECUTAR INTERRUMPIRRESTABLECEREJERCICIOS PROPUESTOSCrear la siguiente planilla llamada EMPLEADOSCrear las siguientes macros de teclado:1. Macro Fondo_amarillo, para aplicar color de relleno amarillo.2. Macro signo_peso para aplicar formato monetario $.3. Macro ARIAL, para aplicar letra arial tamaño 12.4. Macro BORDES para aplicar bordes de color azul.Apuntes preparado por : Rebeca Cartagena Jessen 5
  6. 6. ELIMINAR UNA MACROMenú Herramientas – opción Macro – opción Macros.Se despliega la ventanaVER EL CODIGO DE UNA MACROEn la ventana anterior, seleccione la macro y haga un clic en el botón Modificar, Ud. visualizará el código(instrucciones que componen la macro) en la siguiente ventana:Las líneas que comienzan con la comilla simple (‘) son comentarios. Ud. podría agregar los comentariosque desee (digite la comilla primero y luego escriba el texto requerido).Las líneas en color negro son las instrucciones que al ejecutar el computador realiza la operación.INTEGRAR DOS MACROSSi se desea que una macro realice además las operaciones que están en otra macro se debe:Apuntes preparado por : Rebeca Cartagena Jessen 6Seleccione con un clic la macro a eliminar yluego haga un clic en botón Eliminar
  7. 7. 1. Abrir la macro (de la cual se desee obtener el código) y seleccionar las líneas negras que son lasinstrucciones en código Visual Basic , luego hacer un clic en Copiar. Cerrar la macro.2. Abrir la otra macro. Ubicar el cursor en una línea en blanco, después de la última instrucción, yrealice la operación de Pegar.ASOCIAR UN BOTÓN A UNA MACROUd. puede asociar un elemento gráfico a una macro, de tal forma que al hacer un clic en ese botón se ejecutela macro.1. Dibuje la figura, con los elementos de la barra de dibujo.2. Sobre el elemento dibujado haga un clic con el botón derecho del mouse y elija la opciónAsignar MacroSe despliega la siguiente ventana:3. Al desmarcar el elemento y ubicarse con el cursor sobre el aparece la típica mano, la cual si hace unclic ejecuta la macro.ELIMINAR EL ELEMENTO ASOCIADO A UNA MACROHaga un clic sobre el elemento con el botón derecho del mouse y luego haga un clic con el botón izquierdosobre el elemento presione finalmente la tecla SUPR.CREAR UNA BARRA DE HERRAMIENTAS PARA LAS MACROSUna de las formas mas útiles para tener disponibles las macros en su planilla es crear una barra deherramientasCreadas las macros,1. Menú Ver – opción Barra de Herramientas2. Seleccione la opción Personalizar. Se desplegará la siguiente ventana:Apuntes preparado por : Rebeca Cartagena Jessen 7Seleccione la macro y luego haga un clic enel botón Aceptar
  8. 8. 3. Haga un clic en la pestaña Barra de Herramientas.4. Haga un clic en el botón Nueva...5. Se despliega la siguiente ventana:Ud. notará que en el área de trabajo aparece la barra de herramientas, sin ninguna opción6. La barra de herramientas que acaba de crear aparece en la lista de la ventana Personalizar, y activada.7. Ahora, haga un clic en la pestaña Comandos de la ventana Personalizar. En la columna Categoríasbusque la opción Macros y haga un clic en ella. A la derecha aparece las siguientes opciones:8. El aspecto de la barra de herramientas es el siguiente:Apuntes preparado por : Rebeca Cartagena Jessen 8Digite el nombre que tendrá la barra deherramientas y luego AceptarHaga un clic sobre la opción Personalizar elemento del menú y,sin soltar el botón del mouse, arrastre hasta quedar sobre labarra de herramientas creada.
  9. 9. 9. Haga un clic, sobre el texto Personalizar elemento de menú, con el botón derecho del mouse apareceun menú donde un a de las opciones esNombre: &personalizar elemento de menúBorre esta frase (sin borrar el signo &) y escriba el texto que represente la operación que hará la macro.10. Ahora elija la opción Asignar macro... se desplegará la siguiente ventana:EJERCICIOS PROPUESTOSDesarrolle macros de teclado para cada uno de los siguientes pedidos:1. Aplicar color de texto azul y borde amarillo a celdas seleccionadas.2. Aplicar signo monetario ($) y color rojo a celdas seleccionadas.3. Aplicar el formato de fecha dd/nombre completo del mes/año con cuatro cifras4. Aplicar el formato de fecha dd/nombre completo del mes/año con cuatro cifras y color de texto azulcon borde amarillo a celdas seleccionadas.EJERCICIOS DE MACROS TECLADO (DIRIGIDORealicemos una macro para calcular el presupuesto total por producto:Crearemos la siguiente planilla:Apuntes preparado por : Rebeca Cartagena Jessen 9Seleccione la macro que asignará a laopción recién definida en el pasoanterior y luego haga un clic en Aceptar.
  10. 10. Donde TOTAL será la suma de todos los mesesGrabe la planilla con el nombre presupuestoActive la macro de teclado (Menú HERRAMIENTAS – MACRO- GRABAR NUEVA MACRO)Aparece la sgte. Ventana1. Ubicar el cursor en la celda F5 e ingresar la fórmula =suma(B5:E5). Cópiela hasta la celda F8.2. Seleccione las celda F5:F8 y aplicar formato moneda3. Presionar el botón DETENER GRABACION.Para ver el código de la macro ejecutemos:Menú HERRAMIENTAS - Opción MACRO - opción MACROSSeleccionemos la macro TotalProducto y el botón MODIFICAR o la otra opción es ir la menúHERRAMIENTAS, seleccionar Macro y luego Editor de VB, Ubique en la ventana que aparece elicono de macros Personales como lo sgte.Apuntes preparado por : Rebeca Cartagena Jessen 10Vea si el Módulo1 o Módulo2 contienesu macro, la reconocerá por el nombreque le dio a la macro y la fecha.Ingresamos el nombre de la macro(macro_Presup)Asociamos la macro a las teclas CTRL. bGuardamos en un libro de macros personalY le damos alguna descripción que nosoriente que tareas hará la macroAl presionar el botón Aceptar, observe la barra de estado, al final de la pantalla, aparece elmensaje GRABANDO (esto quiere decir que cualquier pulsación de teclado comienza a grabarseen el libro de macro personal
  11. 11. El código visualizado es:Las líneas en verdes no son ejecutables y se reconocen porque deben llevar un apóstrofe al inicioEl término R1C1 hace referencia a la celda A1. Esto se llama NOTACION RIC1 (para poder visualizar estaforma de notación ejecute:Menú HERRAMIENTAS - opción OPCIONES -Haga un clic en la pestaña GENERAL y active la casilla ESTILODE REFERENCIA F1C1). Ud. notará que cuando el cursor está ubicado en una celda, en la barra de fórmulaaparece como referencia el número de fila y número de columna (por ejemplo si Ud. se ubica en la celda b8 enla barra de fórmula aparece F8C2. Para desactivar esta opción vuelva al mismo menú y desactive el estilo dereferencia.Asignaremos un icono a la macro y la mantendremos en nuestra barra de herramientasIr al menú Ver – Barra de Herramientas – PersonalizarUbíquese en la pestaña o etiqueta de Barra de Herramientas y seleccione el botón Nueva...Aparece la sgte ventana, ingrese l nombre que el daremos a la barra de herramientas(macro de compras) yluego ACEPTARApuntes preparado por : Rebeca Cartagena Jessen 11
  12. 12. Luego aparece la venta de Personalizar, seleccione la etiqueta o pestaña ComandosArrastre con el mouse el texto que dice “Personalizar elemento del menú y llévelo al interior de la barra deherramientas recién creada llamada macro de comprasCambie el nombre de la barra, apunte con el mouse al nombre que dice personalizar.... y presione el botónderecho del mouse y en la opción Nombre cambie por comprasAhora apunte con el mouse a donde dice compras y presione el botón derecho del mouse y elija la opciónAsignar macro y aparece una ventana llamada Asignar Macro, donde Ud., debe seleccionar la macro que seencuentra en el listado, no olvide que se llama macro_Presup y luego presione el botón ACEPTARLuego cierre la ventana de Personalizar y ya tiene una barra de herramientas asignada a esa macro que puedeser usada con planilla similares a la del presupuesto.La barra compras la puede dejar junto a sus iconos de la barra de herramientasApuntes preparado por : Rebeca Cartagena Jessen 12Barra de herramientasMacro de comprasObserve la barracompras, esebotón es lamacro
  13. 13. EJERCICIO: Crear las siguientes macros .1. Desarrolle una macro que al ejecutar entregue en la fila 9 los totales de cada mes (la macrodeberá llamarse TotalMes y el método abreviado debe ser CTRL-b)2. Desarrolle una macro para aplicar bordes color azul a la planilla anterior (la macro deberállamarse BordesAzul y el método abreviado debe ser CONTROL-d)3. Agregue la columna FECHA a la planilla (en la columna G) y llene el rango con fechas.Desarrolle una macro para dar un formato de fecha a los datos (el que Ud. elija). La macrodeberá llamarse FormatoFecha y el método abreviado debe ser CTRL-e.4. Desarrolle un a macro para eliminar las líneas divisorias de la planilla (la macro deberá llamarseQuitarLineas y el método abreviado debe ser CTRL-f).5. Desarrolle un a macro para activar las líneas divisorias de la planilla (la macro deberá llamarseActivaLineas y el método abreviado debe ser CTRL-g).OBSERVACION: Visualice en cada ejercicio el código de la macro e interprételo.Apuntes preparado por : Rebeca Cartagena Jessen 13
  14. 14. Entorno de Visual BasicLa creación de macros en general utiliza el ambiente de Visualbasic.• Primero accesar la planilla electrónica Excel.• Elegir del menú la opción HERRAMIENTAS• Del submenú desplegado elegir la opción MACROS• Elegir del nuevo submenú la opción EDITOR DE VISUALBasicPara visualizar dichos elementos ejecute:• Menú VER - opción EXPLORADOR DE PROYECTOS• Menú VER - opción VENTANA DE PROPIEDADES• Menú INSERTAR - opción USER FORMApuntes preparado por : Rebeca Cartagena Jessen 14(Los últimos tres pasos los puede obviar si presiona las teclasALT y F11)El entorno de Visual Basic utiliza tres elementos fundamentalespara laconstrucción de macros:• EXPLORADOR DE PROYECTOS• VENTANA DE PROPIEDADES• CUADRO DE HERRAMIENTAS
  15. 15. OBJETO : Es cualquier elemento reconocible en el entorno de desarrollo. Por ejemplo, en Excel sonobjetos una celda, un rango de celdas, un libro de trabajo, una hoja de cálculo una columna, etc.PROPIEDAD : Es cualquier atributo o referencia de un objeto. Por ejemplo, una celda tiene fondo y bordes,una columna tiene ancho, una hoja tiene un nombre; un texto tiene un tamaño, color, etc.METODO : Corresponden a las acciones que se pueden realizar sobre un objeto. Por ejemplo, Una celdase puede copiar, borrar, darle un formato; una columna se puede Eliminar, a una hoja se le puede cambiar elnombre; un libro se puede guardar.Observación: 1. Si no visualiza el explorador de proyecto y/o la ventana de propiedades elijaMenú VER – opción EXPLORADOR DE PROYECTO y/o VENTANA DE PROPIEDADES2. Para escribir una macro debe activar el cuadro de código:Elija menú VER – opción CODIGO. Se desplegará la siguiente ventana.Apuntes preparado por : Rebeca Cartagena Jessen 15Conceptos Fundamentales para el Desarrollo deMacrosPROGRAMACIÓN DE MACROSMenú principalBarra de herramientasExplorador de proyectoVentana de propiedadesArea de trabajo
  16. 16. Algunos objetos con sus métodos y propiedadesOBJETO METODO PROPIEDADESWorkBooks .Add .Count.Close .Item.Open .ApplicationWorkSheets .Add .Visible.Copy .Activate.Delete .Count.InsertRange .Activate .Borders.Calculator .Cells.Clear .Formula.Copy .Name.Show .Interior.Insert .OffsetCells .Activate .Borders.Select .Column.Copy .Font.Formula.WidthApuntes preparado por : Rebeca Cartagena Jessen 16
  17. 17. DESARROLLO DE UN EJEMPLO:1. CREAR LA SIGUIENTE PLANILLA:2. Activar la barra de herramientas de Visual Basic3. Para ir al código de programación:Elija la opción VER del menú y luego la opción CODIGO (aparecerá una ventana en blanco,con el cursor activado)4. Para crear un procedimiento (Macro) deberá digitar primero:Sub nombre de la macro( ) (no debe incluir espacios ni caracteres enEl nombre, salvo el carácter "_" )Luego presione la tecla ENTER y notará que se crea al final el comando End SubEntre estas dos líneas se crea el código de la macro.Para el ejemplo, el nombre de la macro será Calcular_ComisionLa macro calculara un 20% de comisión del total de las ventas.Apuntes preparado por : Rebeca Cartagena Jessen 17Programando directamente en códigoHaga un clic en el botón EDITORDE VISUAL Basic
  18. 18. RANGE: PARA SELECCIONAR UNA CELDA O RANGO DE CELDASLa sintaxis es :En nuestro ejemplo:1. Digite Range("I4").Select (Cuando se ejecute la macro, ubicará el cursor en la celda I4)2. Para ver el resultado, vuelva a excel haciendo un clic en el botón VERMICROSOFT Excel3. Asocie el método abreviado CTRL - t a la macro (herramientas - macro –macros - botón Opciones), sino desde el icono que representa el ejecutar4. Ubique el cursor en cualquier celda que no sea la I4, y ejecute la macroSELECTION.FORMULA – PERMITE NGRESAR DATOS EN UNA CELDA ACTIVA.(También podemos ingresar formula, lo veremos más adelante)La sintaxis es:En nuestro ejemplo:1) Digite en la siguiente línea del códigoSelection.Formula=”Comisión Ventas”(Así va quedando la macro en VB)Apuntes preparado por : Rebeca Cartagena Jessen 18Instrucciones para macrosRange ("celda o rango de celdas").SelectSelection.Formula="dato "Al hacer un clic en este botón, se ejecuta la macro
  19. 19. 2) Vuelva a excel y ejecute la macro(presione las teclas CTRL. tSELECTION.OFFSET - PERMITE UBICARSE EN UNA CELDA CON RESPECTO A OTRA.La sintaxis es:Nº de fila : si es positivo bajará tantas celdas como indique el númeroSi es negativo, subirá tantas celdas como indique el númeroNº de columna : Si es positivo avanzará tantas columnas como indique el númeroSi es negativo retrocederá tantas columnas como indique el númeroEn nuestro ejemplo, agregue la siguiente línea al código:Selection.Offset(1, 0).Select (bajará una celda y se ubicará en la I4)(el cero indica no moverse de la columna)SELECTION.FORMULA - PERMITE INGRESAR UNA FORMULAConsidere que la referencia a celdas se hará de acuerdo a la celda en que se esté ubicado en ese momento.REFERENCIA A CELDASR Indica fila (si el número es positivo hace referencia a una celda ubicada hacia abajo)C indica columna (si el número es positivo hace referencia a una celda ubicada hacia la derecha)Apuntes preparado por : Rebeca Cartagena Jessen 19Selection.Formula="=formula"R[nº]C[nº]Selection.Offset(nº de fila,nº de columna).Select
  20. 20. Si desea hacer referencia a celdas en la misma fila o misma columna:RC[Nº] : Fija la filaR[nº]C : Fija la columnaEn nuestro ejemplo, Agregue la siguiente línea al código:Selection.Formula =”=RC[-]*0.2”Vuelva a Excel y ejecute la macroRANGE COPY- PERMITE COPIAR FORMULA A UNA CELDA O A UN RANGO.La sintaxis es:En nuestro ejemplo, agregue la siguiente línea al código:Range("I5").Copy Range("I6:I11")Nuestra macro está quedando en la hoja de código o en el editor de VB, así:Vuelva a excel y ejecute la macro (solo para que vea como va quedando y que está haciendo)SELECTION.NUMBER.FORMAT – PERMITE DAR FORMATO NUMERICO A UN RANGO DE CELDASApuntes preparado por : Rebeca Cartagena Jessen 20Range("coordenada de origen").Copy Range("coordenadas de destino")Selection.NumberFormat="formato deseado"
  21. 21. En nuestro ejemplo, agregue la siguiente línea al código:Range("I5:I11").SelectSelection.NumberFormat =”$ 0.0" (Se coloca el símbolo que ud.. maneje en suplanilla, por ejemplo $.)Vuelva a excel y ejecute la macroALIGNMENT - PARA ALINEAR UN RANGO DE CELDASRange("I5:I11").SelectWith Selection.HorizontalAlignment = xlCenterEnd WithPARA APLICAR COLOR DE FONDO A UN RANGO DE CELDASRange("I5:I11").Select (si está marcado el rango desde la actividad anterior, lopodemos obviar)With Selection.Interior.ColorIndex = 7End WithFONT.COLORINDEX - PERMITE APLICAR COLOR A LA FUENTERange("I4:I8").SelectSelection.Font.ColorIndex = 5o tambiénWith Selection.Font.ColorIndex = 5End WithBORDERS.LINESTYLE – PERMITE APLICAR BORDESSelection.Borders.LineStyle = xlContinuous (línea simple en los bordes)(Los colores son : 1(negro), 2(blanco), 3(rojo), 4(verde), 5(azul), 6(amarillo), 7(lila))Veamos como va quedando nuestra macro en el editor de VB. Luego vaya a excel y ejecute la macro.Apuntes preparado por : Rebeca Cartagena Jessen 21
  22. 22. UCASE - Permite convertir a mayúsculas la información de una celdaSintaxis : Ucase(“hola”)LCASE - Permite convertir a minúsculas la información de una celdaACTIVECELL - PARA VER O HACER REFERENCIA AL CONTENIDO DE LA CELDA EN QUE ESTÁ UBICADO ELCURSOR.La sintaxis es :CELLS - Entrega el contenido que hay en una celdaSINTAXISCells(nº de fila,nºde columna)Por ejemplo coloquemos el contenido de la celda I4 (Comision Ventas, que es la fila 4 y la columna 9 ), comoparte del título de la planilla y copiarlo a la celda E1.Digitamos a continuación de lo que ya tenemos en nuestra macro, lo sgte.:Range(“E1”).selectSelection.formula=cells(4,9)Apuntes preparado por : Rebeca Cartagena Jessen 22ActiveCell
  23. 23. IF – THEN – ENDIF – PERMITE REALIZAR CONDICION LOGICASPermite establecer procesos (conjunto de instrucciones) alternativos dada una condición.Su sintaxis es:GOTO - PARA BIFURCAR LA SECUENCIA DE INSTRUCCIONESPermite cambiar el flujo normal de un proceso.Veamos un EJEMPLOSi el vendedor tuvo un total de ventas sobre o igual los 700 , tendrá un Bono adicional que será un 50% de loobtenido en la comisión.Crearemos una columna en J que entregará el BONO para todos aquellos que cumplan la condición anterior.Range("J4").SelectSelection.Formula = "BONO"Range("h5").Selectcomparar:If ActiveCell <> "" ThenIf ActiveCell >= 700 ThenSelection.Offset(0, 2).SelectSelection.Formula = "=RC[-1]*.5"Selection.Offset(1, -2).SelectEnd IfSelection.Offset(1, 0).SelectGoTo comparar:End IfApuntes preparado por : Rebeca Cartagena Jessen 23Nombre es una palabra que deberá ir en alguna partedel código (debe terminar con ":"). Al llegar a la líneaque tiene la sentencia GoTo, el sistema saltará a lalínea del código que tiene el nombre y ejecutará loque sigue inmediatamente.If condición lógica Then………………………………………Else………………………………………End IfEjecuta cuando la condición es verdaderaEjecuta cuando la condición es verdaderaGoTo nombre
  24. 24. Veamos como va quedando la macroApuntes preparado por : Rebeca Cartagena Jessen 24
  25. 25. CONDICIONALIDAD ANIDADAPuede que en una situación se deba definir más de dos alternativas (por ejemplo, que la situación del alumno seaAprobado, Reprobado o Pendiente). Para establecer esta situación se utiliza la instrucción IF con anidaciones (IF dentro deIF).EjemploInsertaremos(sin usar macros) una columna a nuestra planilla donde colocaremos la Calificación del vendedorAgregamos una nueva columna llamada TURNO (en la col. L), que nos entregará lo sgte.Si el vendedor es calificación A1, tendrá turno Fijo, los B1, tendrán turno Alternado y los C1 tendrán sólo de tardeRange("L4").SelectSelection.Formula = "TURNO"Range("C5").Selectverturno:If ActiveCell <> "" ThenApuntes preparado por : Rebeca Cartagena Jessen 25If condición Then........................................If condición Then............................................If condición Then............................................Else..................................End IfEnd IfElseIf condición Then..................................Else..................................................End IfEnd If
  26. 26. If ActiveCell = "A1" ThenSelection.Offset(0, 9).SelectSelection.Formula = "Fijo"ElseIf ActiveCell = "B1" ThenSelection.Offset(0, 9).SelectSelection.Formula = "Alternado"ElseSelection.Offset(0, 9).SelectSelection.Formula = "Tarde"End IfEnd IfSelection.Offset(1, -9).SelectGoTo verturnoEnd IfEjecutada la macro queda así la columna TurnoSELECT CASE – Permite realizar una serie de selecciones múltiples , que se pueden resolver con eluso de varios Si condicionales, pero esta instrucción permite usarla de forma más fácil.- Estructura Select Case.:Esta estructura se utiliza como alternativa a la estructura If...Then...Else.SintaxisSelect Case VariableCase valor variable 1INSTRUCCIONESCase valor variable 2InstruccionesCase elseINSTRUCCIONESEnd SelectApuntes preparado por : Rebeca Cartagena Jessen 26
  27. 27. La cláusula Case Else se ejecutará en caso de que ningún valor de la lista de expresionescoincida.Veamos un caso real, si variable X tiene el valor 1 Suma valores, si tiene el valor 2 Restará y así.Select Case XCase 1Suma_valoresCase 2Resta_valoresCase 3Divide_valoresCase elseInicializa_valoresEnd SelectEjemplo, el mismo caso anterior, pero resuelto con el Select CaseRange("L4").SelectSelection.Formula = "TURNO"Range("C5").Selectverturno:If ActiveCell <> "" Thenturno = ActiveCell.FormulaSelect Case turnoCase "A1"Selection.Offset(0, 9).SelectSelection.Formula = "Fijo"Case "B1"Selection.Offset(0, 9).SelectSelection.Formula = "Alternado"Case "C1"Selection.Offset(0, 9).SelectSelection.Formula = "Tarde"End SelectSelection.Offset(1, -9).SelectGoTo verturnoEnd IfA través de una macro podemos realizar cálculos como contabilizar campos que cumplan con unadeterminada condición, como también podemos ir sumando los valores de una columna en formaarbitraria o también la podemos ir sumando solo si cumple determinados criterios. Para lograr llevarestos procesos, debemos asignar a determinadas variables que Ud. defina, el rol de contadores o deacumuladores, estos valores cada vez que se incrementan no se pierden porque van quedando en lamemoria principal del computador, solo se perderán si se apaga el equipo o hay cortes de luz.Apuntes preparado por : Rebeca Cartagena Jessen 27Uso de contadores y acumuladores en MacrosX es una variable que puede tomar el valor :1, 2 , 3 o cualquier otro
  28. 28. Contadores: Son variables que nos van a permitir llevar un control de la cantidad de veces que serealiza una determinada operación. Normalmente se inicializarán con el valor cero y en cada ciclo onuevo proceso, es posible que el contador se incrementa en el valor 1.Ejemplo de un contador cualquieraConta=0 la variable Conta se inicializa con el valor 0 al inicio del programaY durante el programa que tiene un proceso es probable que este contador se incremente y la formade hacerlo es:Conta=conta +1Acumulador : Son variables que permiten realizar una sumatoria de valores numéricos. Elacumulador, permite en cada nuevo proceso o ciclo incrementarse la variable en un valor distintoque normalmente es un valor que se ingresa en el proceso de entrada de datos o que está contenidodentro de la planilla. Es recomendable inicializar los acumuladores al principio con el valor 0.EjemploSuma_ed=0 , la variable suma_ed es un acumulador que se inicializa al principio del programa conel valor cero, y es probable que en el proceso del programa, el acumulador se vaya incrementandomuchas veces.Pensemos que esta variable que la hemos definido como acumulador , irá acumulando un valorrepresentado por la edad, que puede estar en una columna o se puede ingresar por via teclado opuede ser extraida de un archivo.Suma_ed=suma_ed + edad , en esta línea el acumulador va sumando el valor edadEXIT DO: permite romper el ciclo, aún cuando la condición es verdaderaEsta instrucción sirve para reemplazar la instrucción de nuestra macro que es la que analizaba si lacelda era distinta de vacio.Apuntes preparado por : Rebeca Cartagena Jessen 28Ciclo de IteraciónCiclo de IteraciónDo while condición---------------------------------------------------------------------------------------------Exit DO-------------------------------------------------Loop---------------------------------------------------------------Las Instrucciones que están entre el Do while y elLoop ,se ejecutarán mientras se cumpla lacondición.Cuando la condición contenido en el Do While esfalsa, se comienzan a ejecutar las instruccionessiguientes al LOOP
  29. 29. La instrucción era IF ACTIVECELL <> “” THEN , ahora lo podemos hacer con el WhileDO WHILE ACTIVECELL <> “”------------------------------------------------------------------------------------------LOOPEjemplo de la última parte vista en nuestra macroRange("L4").SelectSelection.Formula = "TURNO"Range("C5").Selectverturno: (y la etiqueta del GOTO ya esta demás)If ActiveCell <> "" Then (La debemos reemplazar por DO WHILE ACTIVECELL <> “” )turno = ActiveCell.FormulaSelect Case turnoCase "A1"Selection.Offset(0, 9).SelectSelection.Formula = "Fijo"Case "B1"Selection.Offset(0, 9).SelectSelection.Formula = "Alternado"Case "C1"Selection.Offset(0, 9).SelectSelection.Formula = "Tarde"End SelectSelection.Offset(1, -9).SelectGoTo verturno (Esta instrucción se elimina )End IfLOOP (Se agrega la instrucción LOOP, que significa volver al do while, para continuar)Ejemplo:Crear la siguiente planilla:Hacer una macro llamada RECORRER, la cual permita completar la columna Valor stock(valor stock= valor pelicula * stock)Apuntes preparado por : Rebeca Cartagena Jessen 29Instrucciones enVB
  30. 30. SoluciónSub recorre()Range("a4").SelectDo While ActiveCell <> ""Selection.Offset(0, 5).SelectSelection.Formula = "=rc[-2]*rc[-1]"Selection.Offset(1, -5).SelectLoopEnd SubEjemplo: Crear una macro llamada TOTALES, la cual calcule:- El número de películas tipo DVD que tiene la planilla.- Total de películas que hay en stock(dejar el resultado en algún lugar al final de la planilla).Solución:Sub totales()Contadvd = 0stock = 0Range("c4").SelectDo While ActiveCell <> ""IF activecel l=”dvd” thenContadvd=contadvd + 1EndifSelection.Offset(0, 2).Selectstock = stock + ActiveCellSelection.Offset(1, -2).SelectLoopRange(“c10”).selectActiveCell = "películas DVD"Selection.Offset(1, 0).SelectActiveCell = contadvdSelection.Offset(-1, 1).SelectActiveCell = "total peliculas"Selection.Offset(1, 0).SelectActiveCell = stockEnd SubEjemplo: Crear una macro llamada TOTAL_DVD que contabilice el total de DVDs que hay en stock.Solución:Sub total_dvd()dvd = 0Range("c4").SelectDo While ActiveCell <> ""If ActiveCell = "dvd" ThenSelection.Offset(0, 1).Selectdvd = dvd + ActiveCellSelection.Offset(1, -1).SelectElseApuntes preparado por : Rebeca Cartagena Jessen 30Selection.Offset(1, 0).Select
  31. 31. End IfLoopRange(“F10”).selectSelection.formula= "total stock dvd"Selection.Offset(1, 0).SelectSelection.formula= dvdEnd SubFOR : Repite un grupo de instrucciones un número especificado de veces.SINTAXISFor contador = principio To fin [Step incremento][instrucciones][Exit For][instrucciones]Next [contador]La sintaxis de la instrucción For...Next consta de las siguientes partes:Parte Descripcióncontador Requerido. Variable numérica que se utiliza como contador de bucle. Lavariable no puede ser de tipo Boolean, ni ningún elemento de matriz.Principio Requerido. Valor inicial del contador.Fin Requerido. Valor final del contador.Incremento Opcional. Cantidad en la que cambia el contador cada vez que se ejecuta elbucle. Si no se especifica, el valor predeterminado de incremento es uno.Instrucciones Opcional. Una o más instrucciones entre For y Next que se ejecutan unnúmero especificado de veces.La instrucción For, también es una instrucción de Ciclos con la diferencia que el ciclo se ejecuta la cantidad deveces indicada en el valor FinMuestra un mensaje en un cuadro de diálogo y espera que el usuario escriba un texto o haga clic en un botón yel dato ingresado queda como un tipo String(texto).SINTAXISInputBox("mensaje",["título "])Mensaje: Es el texto que se desplegará en la caja de diálogo.Título : es el texto que se desplegará en el rótulo de la caja de diálogo.Apuntes preparado por : Rebeca Cartagena Jessen 31Función INPUTBOX
  32. 32. Microsoft Excel, también agregar automáticamente un botón Ayuda al cuadro de diálogo. Si el usuario hace clicen Aceptar o presiona ENTRAR, la función InputBox devuelve lo que haya en el cuadro de texto. Si el usuariohace clic en Cancelar, la función devuelve una cadena de caracteres de longitud cero ("").NOTA: Si desea especificar más que el primer argumento con nombre, debe utilizar InputBox en unaexpresión de la siguiente forma:variable = InputBox("mensaje",["título "])El valor que tome la variable será de acuerdo al botón que el usuario eligió (con un clic) en la caja de diálogo,así:- Si hizo clic en el botón ACEPTAR en la variable se almacenará lo que el usuario digitó en la cajade dialogo.- Si hizo clic en el botón ACEPTAR la variable almacenará vacío ( "")EJEMPLO: Active la vista del código en Visual Basic y cree la siguiente macro:1) Sub cajas()InputBox ("ingrese su nombre")End SubAl ejecutar la macro (un clic en el botón )Se despliega:Digite su nombre y haga un clic en cualquiera de los botones y volverá al código de la macro.2) Implemente lo siguiente en la macro:Sub cajas()Entrada=InputBox ("ingrese su nombre", "caja de entrada")End SubAl ejecutar la macro se desplegará:Digite su nombre y haga un clic en cualquiera de los botones y volverá al código de la macro.Apuntes preparado por : Rebeca Cartagena Jessen 32
  33. 33. NOTA : Entrada es una variable y si Ud. hizo un clic en el botón ACEPTAR el nombre que digitó sealmacena en dicha variable. Si Ud. eligió CANCELAR se almacena el valor "".3) Implemente la macro con lo siguiente:Sub cajas()entrada = InputBox("ingrese su nombre", "caja de entrada")Range("A1").SelectSelection.Formula = entradaEnd SubEjecute la macro y vaya a Excel con un clic en el botón )Observará que En la celda A1 quedó almacenado el nombre que Ud. digitó.Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelveun tipo Integer correspondiente al botón elegido por el usuario.SINTAXISMsgBox("texto a desplegar en la caja"[, boton][, titulo])Botón : Es opcional. Es un número que representa el número y el tipo de los botones que sedesea mostrar. Si se omite este argumento, el valor predeterminado para buttons es 0..Los valores para este parámetro son:Valor Descripción0 Muestra solamente el botón Aceptar.1 Muestra los botones Aceptar y Cancelar.2 Muestra los botones Anular, Reintentar e Ignorar.3 Muestra los botones Sí, No y Cancelar.4 Muestra los botones Sí y No.5 Muestra los botones Reintentar y Cancelar.Titulo : Es opcional. Corresponde al texto que se muestra en la barra de título del cuadro dediálogo.OBSERVACION : Si desea especificar más que el primer argumento con nombre, debe utilizar MsgBox en unaexpresión. Si desea omitir algún argumento de posición, debe incluir el delimitador de coma correspondiente.variable = MsgBox ("texto", nº,"título de la caja")Apuntes preparado por : Rebeca Cartagena Jessen 33Función MSGBOX
  34. 34. EJEMPLO:1) Implemente la macro anterior con lo siguiente:Sub cajas()entrada = InputBox("ingrese su nombre", "caja de entrada")Range("A1").SelectSelection.Formula = entradaMsgBox ("ingresaste un nombre")End SubEjecute la macro y notará que al final se despliega la siguiente ventana:Haga un clic en ACEPTAR y volverá al código de la macro.2) Implemente la instrucción de MsgBox con:salida = MsgBox("ingresaste un nombre", 1, "mensaje")Ejecute la macro y notará que al final se despliega la siguiente ventana:EJERCICIO RESUELTOEn otra Hoja de Excel ingrese en la celda A2 la palabra NOMBRE.Crear una nueva macro que permita ingresar nombres a partir de la celda A3 hacia abajo, hasta que el usuariolo requiera.Sub ejemplo()Range("A3").Selectcontinuar:nombre = InputBox("ingresa un nombre", "ventana de ingreso")Selection.Formula = nombreseguir = InputBox("desea ingresar otro nombre(si/no)?", "proceso")If seguir = "si" ThenSelection.Offset(1, 0).SelectGoTo continuarElseMsgBox ("terminamos")End IfEnd SubApuntes preparado por : Rebeca Cartagena Jessen 34
  35. 35. Búsqueda de datos en una planillaA continuación realizaremos una macro para determinar si una película existe o no en la planilla. Loharemos de la siguiente forma:El usuario ingresará en un cuadro de dialogo el código de la película a buscar. Recorreremos lacolumna donde están los códigos de película. El resultado de la búsqueda será si existe o si noexiste.Sub busca_pelicula()a = InputBox("ingrese código de película a buscar")Range("a4").Selectsw = "no"Do While ActiveCell <> "" And sw = "no"If ActiveCell = a Thensw = "si"ElseSelection.Offset(1, 0).SelectEnd IfLoopIf sw = "no" ThenMsgBox ("película no existe en lista")ElseMsgBox ("película encontrada")End IfEnd SubDescripción del proceso:- En la variable a quedará almacenado el código de la película que el usuario quierebuscar.- Ubicaremos el cursor en la celda donde está el primer código de película existente (A4).- En una variable llamada sw se almacenará el texto “no” suponiendo que el código abuscar no está en la planilla.- El ciclo se ejecutará mientras no lleguen al final de la planilla y no se haya encontrado elcódigo a buscar.- Si el código se encuentra sólo se cambiará la variable sw por el valor “si” (indicando quese encontró). Esto permitirá salir del ciclo sin haberla recorrido hasta el final (el cursorquedará ubicado en la celda donde se encontró el código).- Si el código buscado no coincide con el de la planilla se bajará una fila para compararcon el siguiente.- Si el código no está en la planilla el cursor quedará ubicado al final de ella, y la variablesw no habrá cambiado de estado (seguirá siendo “no”).- Al final del ciclo se preguntará por la variable sw. Si salió del ciclo con el valor “no”significará que el código no estaba en la planilla (se desplegará el mensaje “película noexiste en la lista”). De lo contrario (si sw sale del ciclo con el valor “si”) significará que lapelícula se encontró (se desplegará el mensaje “película encontrada”).Apuntes preparado por : Rebeca Cartagena Jessen 35
  36. 36. Diseño de formulariosLa construcción de una aplicación gráfica implica la creación de formularios y de objetos contenidosen ellos.PASOS FUNDAMENTALES1. Crear la interfaz gráfica o diseño del formulario2. Establecer las propiedades de los controles y del formulario3. Implementar el código necesarioDISEÑO DEL FORMULARIOLos formularios son los elementos más importantes de cualquier aplicación pues ellos corresponden alas ventanas con las que interactúa el usuario cuando ejecuta la aplicación.Siempre que se comienza una aplicación, el primer paso será diseñar el formulario y establecer laspropiedades de el.1. Ir al ambiente de Visual Basic2. Insertar el formulario (menú INSERTAR – opción USERFORM)3. Maximizar la ventana4. Dibujar los objetos que contendrá el formularioApuntes preparado por : Rebeca Cartagena Jessen 36Ventana de ProyectoEn el Menú Ver seactivaVentana PropiedadesFormulario
  37. 37. OBJETOS O CONTROLES EN UN FORMULARIOLos controles se encuentran en el Cuadro de herramientas, cada vez que se ingresa un formularioCuadro de texto (text box). Muestra información de un usuario o de un conjunto de datosorganizados.Un control TextBox es el control utilizado más habitualmente para mostrar informaciónescrita por un usuario. También puede mostrar un conjunto de datos como una tabla, unaconsulta, una hoja de cálculo o el resultado de un cálculo.Etiqueta (Label) : Muestra un texto descriptivo como un título, leyenda,comentarios, etc.Puntero : Permite seleccionar cualquier objeto que se encuentrainserto en un formularioDIBUJO DE OBJETOS EN UN FORMULARIO1. Hacer un clic en el objeto o control2. Colocar el puntero del mouse dentro del formulario (el puntero cambia a una cruz) ymanteniendo presionado el botón izquierdo del mouse dibujar un rectángulo.Apuntes preparado por : Rebeca Cartagena Jessen 37Marco (frame) : Permite agrupar un conjunto de controles quetienen alguna vinculaciónCuadro de Lista (listbox) : Permita mostrar una lista deinformación que se encuentra en la planilla excelBotón de comando (commandButton)Inicia, finaliza o interrumpe una acción o una seriede acciones.
  38. 38. EJERCICIO#1: Crear el siguiente formulario con dos controles Botón de comando dos cuadrode texto y dos etiquetas, como indica la figura siguiente:EtiquetaCaja de textoBotón de ComandoOBSERVACIÓN: Para eliminar un control del formulario basta hacer un click sobre el ypresionar la tecla SUPR.PROPIEDADES PARA LOS FORMULARIOS Y CONTROLESUna vez dibujados el formulario y los controles se deben establecer las propiedades de ellos. Este proceso serealiza en la ventana de propiedades.1. Hacer un click en el objeto (formulario o control)2. Active la ventana de propiedades si no la tiene a la vista (con tecla F4)PROPIEDADES MAS COMUNES PARA LOS OBJETOSObjeto Propiedad SignificadoFormulario (UserForm) NameBackColorCaptionEs el nombre del objetoColor de fondoEs el rótulo que aparecerá para la ventanaEtiqueta NameBackcolorFontCaptionEs el nombre del objetoColor de fondoTipo de letra del textoEs el rótulo que aparecerá en el botónCuadro de texto NametextEs el nombre del objetoEl texto que debe aparecer (por defecto vacío)Botón de comando NameBackColorCaptionForeColorFontEs el nombre del objetoColor del botónEs el rótulo que aparecerá en el botónEs el color de texto del botónTipo de letra del textoApuntes preparado por : Rebeca Cartagena Jessen 38
  39. 39. EJERCICIO #2: Definir las siguientes propiedades al formulario y objetos creados anteriormente.Objeto Propiedad SignificadoFormulario (UserForm) NameBackColorCaptionFormulario1Color celesteEste es mi primer formularioEtiqueta1 NameBackcolorFontCaptionEtiq1NaranjoComic Sans, tamaño 10NOMBREEtiqueta2 NameBackcolorFontCaptionEtiq2NaranjoComic Sans, tamaño 10APELLIDOCuadro de texto1 NametextNOMVacíoCuadro de texto2 NametextAPEVacíoCuadro de texto3 NametextMENSAJEVacíoCommand Button1 NameBackColorCaptionForeColorFontAceptarColor a elecciónSALUDOSAzulComic SansCommand Button2 NameBackColorCaptionForeColorFontAcceleratorTerminarColor a elecciónSALIRcolor rojoComic SansSEl formulario deberá quedar con el siguiente aspectoApuntes preparado por : Rebeca Cartagena Jessen 39Para asignar algunapropiedad al objeto,este debe estarseleccionadopreviamente
  40. 40. IMPLEMENTACION DEL CODIGOPara crear el código debe hacer doble clic sobre el objeto y se abrirá la ventana de código y aparecerá:Private Sub nombre del objeto_evento()End SubOBSERVACIÓN: En la ventana de código (en la parte superior) aparecen dos recuadros, el primero contienetodos los objetos disponibles del formulario (incluyendo este) y el segundo contiene los eventos posibles aasociar al objeto (comúnmente es Click).Para volver al diseño del formulario basta con cerrar la ventana de código.GUARDAR LA APLICACIÓN1. Menú ARCHIVO – opción GUARDAR LIBRO2. En la ventana que se despliega en NOMBRE DE ARCHIVO digitar el nombre del proyecto(para nuestro ejemplo, guarde el proyecto con el nombre MI PRIMER FORMULARIO).RECUPERAR UN PROYECTO1. Menú ARCHIVO (en Excel) – opción ABRIR. Ir al editor de Visual Basic.2. Cuando se abre el proyecto : para ver el formulario selecciones VER OBJETO y para ver el códigoVER CODIGO.DIBUJO DE OBJETOS EN UN FORMULARIO3. Hacer un clic en el objeto o control4. Colocar el puntero del mouse dentro del formulario (el puntero cambia a una cruz) y manteniendopresionado el botón izquierdo del mouse dibujar un rectángulo.EJERCICIO#1: Crear el siguiente formulario con dos controles Botón de comando y un cuadro detexto, como indica la figura siguiente:Apuntes preparado por : Rebeca Cartagena Jessen 40ObjetoEventos o procedimientos
  41. 41. OBSERVACIÓN: Para eliminar un control del formulario basta hacer un clic sobre el y presionarla tecla SUPR.EJERCICIO #2: Definir las siguientes propiedades al formulario y objetos creados anteriormente.Objeto Propiedad SignificadoFormulario (UserForm) NameBackColorCaptionFormulario1Color celesteEste es mi primer formularioCuadro de texto NametextsaludovacíoCommand Button1 NameBackColorCaptionForeColorFontAceptarColor a elecciónPulsarcolor rojoComic SansCommand Button2 NameBackColorCaptionForeColorFontterminarColor a elecciónSalircolor rojoComic SansEl formulario deberá quedar con el siguiente aspectoApuntes preparado por : Rebeca Cartagena Jessen 41
  42. 42. IMPLEMENTACION DEL CODIGOPara crear el código debe hacer doble clic sobre el objeto y se abrirá la ventana de código y aparecerá:Private Sub nombre del objeto_evento()End SubOBSERVACIÓN: En la ventana de código (en la parte superior) aparecen dos listas de opciones, la primeracontiene todos los objetos disponibles del formulario (incluyendo este) y la segunda contiene los eventos posiblesa asociar al objeto (comúnmente es Click).Para volver al diseño del formulario basta con cerrar la ventana de código.EJERCICIO #3: En el formulario creado haga doble clic en el botón PULSAR y digite el siguientecódigo:Private Sub Aceptar_Click()saludo.Text = "¡Buenos días para todos!”End SubEjecute la macro y para volver al diseño cierre la ventana del formulario.Al volver al formulario haga doble clic en el botón SALIR y digite el siguientecódigo:Private Sub terminar_Click()EndEnd SubGUARDAR LA APLICACIÓN3. Menú ARCHIVO – opción GUARDAR LIBRO4. En la ventana que se despliega en NOMBRE DE ARCHIVO digitar el nombre del proyecto(para nuestro ejemplo, guarde el proyecto con el nombre MI PRIMER FORMULARIO).RECUPERAR UN PROYECTO3. Menú ARCHIVO (en Excel) – opción ABRIR. Ir al editor de Visual Basic.4. Cuando se abre el proyecto : para ver el formulario selecciones VER OBJETO y para ver el códigoVER CODIGO.FORMULARIOS PARA MANIPULACIÓN DE PLANILLASCREAR LA SIGUIENTE PLANILLA (en hoja1):Apuntes preparado por : Rebeca Cartagena Jessen 42
  43. 43. CREAR LOS SIGUIENTES FORMULARIOS:Apuntes preparado por : Rebeca Cartagena Jessen 43Formulario Name: PrincipalCaption: FormularioprincipalBotón Consulta Name:ConsulempleCaption: ConsultaempleadoBotón Calcular Name: CalculaCaption: CalcularmontosBotón Terminar: Name:TerminaCaption: Terminar
  44. 44. REQUERIMIENTOS PARA LA MACRO A DESARROLLAR1. En el formulario principal el botón CONSULTA EMPLEADO deberá llevar al formulario CONSULTAEMPLEADO.ACTIVAR A TRAVES DE UN BOTÓN UN FORMULARIO DESDE OTRO1. Abrir el formulario.2. Dibujar un botón en el formulario (definir su name y caption)3. hacer doble clic en el botón.4. En el códigodigitar:Private sub nombre del botón()Unload me (descarga el actual formulario)Load nombre del formulario (activa el otro formulario)Nombre del formulario.show (muestra el formulario activo)En nuestro ejemplo, haga doble clic en el botón CONSULTA EMPLEADO, y digite el código siguiente:Private Sub consulemple_Click()Unload MeLoad CONSULTACONSULTA.ShowEnd Sub2. Programar el botón CALCULAR MONTOS, considerando se debe completar la columna TOTAL APAGAR de la planilla en base a la siguiente formula:TOTAL A PAGAR =(Horas contratadas + Horas extras - horas ausencia)*valor horaApuntes preparado por : Rebeca Cartagena Jessen 44Cajas detextosName:Rut,apellido,nombre,departamento,horas, extra,ausencia,valor, montoBotones Name: BuscarCaption:BUSCARahoraName:EliminarCaption:ELIMINARempleadoName:AgregarCaption:AGREGARnuevoempleado
  45. 45. Haga doble clic en el botón CALCULAR MONTO y digite el siguiente código:Private Sub calcula_Click()f = 5Do While Cells(f, 1) <> ""Cells(f, 9) = (Cells(f, 5) + Cells(f, 6) - Cells(f, 7)) * Cells(f, 8)f = f + 1LoopEnd Sub3. Programar el botón TERMINAR para que detenga la ejecución de la macro.Haga doble clic en el botón TERMINAR y digite el siguiente código:Private Sub TERMINA_Click()EndEnd Sub4. En el formulario CONSULTA EMPLEADO, programar el botón BUSCAR AHORA. Este botón deberápermitir buscar el rut ingresado en el cuadro de texto RUT, si existe en la planilla desplegar sus datos, sino existe desplegar mensaje “empleado no encontrado”.Haga doble clic en el botón BUSCAR AHORA, y digite el siguiente código:Private Sub buscar_Click()fila = 5sw = "no"Do While Cells(fila, 1) <> "" And sw = "no"If RUT.Text = Cells(fila, 1) ThenAPELLIDO.Text = Cells(fila, 2)NOMBRE.Text = Cells(fila, 2)APELLIDO.Text = Cells(fila, 3)DEPARTAMENTO.Text = Cells(fila, 4)HORAS.Text = Cells(fila, 5)EXTRA.Text = Cells(fila, 6)AUSENCIA.Text = Cells(fila, 7)VALOR.Text = Cells(fila, 8)MONTO.Text = Cells(fila, 9)sw = "si"Elsefila = fila + 1End IfLoopIf sw = "no" ThenMsgBox ("empleado no encontrado")End IfEnd Sub5. En el formulario CONSULTA EMPLEADO programe el botón ELIMINAR EMPLEADO. Este botón deberáeliminar al empleado que tenga el rut ingresado en el cuadro de texto RUT.Haga doble clic en el botón ELIMINAR EMPLEADO y digite el siguiente código:Apuntes preparado por : Rebeca Cartagena Jessen 45Private Sub eliminar_Click()
  46. 46. fila = 5Range("a5").Selectsw = "no"Do While Cells(fila, 1) <> "" And sw = "no"If RUT.Text = Cells(fila, 1) ThenSelection.EntireRow.Delete (elimina la fila donde esté el cursor)sw = "si"Elsefila = fila + 1Selection.Offset(1, 0).Select (baja una fila el cursor, dentro de la misma columna)End IfLoopIf sw = "no" ThenMsgBox ("empleado no encontrado")End IfEnd Sub6. En el formulario CONSULTA EMPLEADO, programar el botón AGREGAR NUEVO EMPLEADO. Estebotón deberá permitir llevar todos los datos del formulario a la planilla.Haga doble clic en el botón AGREGAR NUEVO EMPLEADO, y digite el siguiente código:Private Sub agregar_Click()fila = 5sw = "no"Do While Cells(fila, 1) <> "" And sw = "no"If RUT.Text = Cells(fila, 1) Thensw = "si"Elsefila = fila + 1End IfLoopIf sw = "no" ThenCells(fila, 1) = RUT.TextCells(fila, 2) = APELLIDO.TextCells(fila, 2) = NOMBRE.TextCells(fila, 3) = APELLIDO.TextCells(fila, 4) = DEPARTAMENTO.TextCells(fila, 5) = HORAS.TextCells(fila, 6) = EXTRA.TextCells(fila, 7) = AUSENCIA.TextCells(fila, 8) = VALOR.TextCells(fila, 9) = MONTO.TextElseMsgBox ("empleado ya existe")End IfEnd Sub7. En el formulario CONSULTA EMPLEADO, programe el botón VOLVER AL FORMULARIO PRINCIPAL.Este botón deberá permitir activar el formulario FORMULARIO PRINCIPAL.Haga doble clic en el botón VOLVER AL FORMULARIO PRINCIPAL, y digite el siguiente código:Apuntes preparado por : Rebeca Cartagena Jessen 46
  47. 47. Private Sub volver_Click()Unload MeLoad PRINCIPALPRINCIPAL.ShowEnd SubSUGERENCIA: Vaya ejecutando la macro a medida que vaya construyendo los módulos.Muestra una lista de valores y le permite seleccionar uno o varios. Para crear un control ListBox haga un clic enel icono del cuadro de herramientas y dibuje un rectángulo en el formularioEJEMPLO: Crear la siguiente planilla:En el editor de Visual Basic crear el siguiente formulario:PROPIEDADESCONTROL PROPIEDAD VALORListBox1 NameRowSourceListaRutA2:A10Label1 Caption RutLabel2 Caption NombreLabel3 Caption EdadTextBox1 Name nombreTextBox2 Name EdadCommandButton1 Terminar TerminarApuntes preparado por : Rebeca Cartagena Jessen 47Control ListBox (cuadro de Lista)
  48. 48. - Haga doble clic en el control ListaRut y digite el siguiente código:Private Sub ListaRut_Click()fila = ListaRut.ListIndex + 2nombre.Text = Cells(fila, 2)edad.Text = Cells(fila, 3)End Sub- Haga doble clic en el control Terminar y digite el siguiente código:Private Sub terminar_Click()EndEnd Sub- Ejecute la macro.Permite mostrar una lista de datos, pero éstos son agregados por el usuario.Se trabajan dentro de un formularioPara que el cuadro llamado Combobox, entregue nombre de ciudades, se debe programar ese botónHaciendo doble clic sobre él y seleccionado luego el evento o procedimiento EnterApuntes preparado por : Rebeca Cartagena Jessen 48Cuadro Combinado(COMBOBOX)Cuadro Combinado o tambiénllamado Combobox.En la propiedad name se le asignaSi se activa este botón, debe traer elnombre del gerente y el Nº deempleados de la sucursal seleccionadapreviamente en el comboboxNombre del combobox Evento o Procedimiento
  49. 49. Se digita :Private Sub ciudad_Enter()With ciudad.Clear.AddItem "La Paz".AddItem "Santa Cruz".AddItem "Sucre"End WithEnd SubAhora veremos como se pueden archivar los datos de unahoja en un archivo aparte.Los archivos secuenciales son aquellos que al registrar sus datos llevan una secuencia, por ejemplo si tengo 10registros con los datos de 10 cliente, estos internamente se ordenan de uno en uno, es decir el primer registroes el 1, el sgte el 2 y así sucesivamente.Instrucciones para el manejo de archivo secuencialesOpen "c:datos.xls" For Output As 1 - Abre un archivo en la unidad C llamado datos.xls, el archivo es de salidaen un área de almacenamiento temporalWrite #1, Num_identificación, nombre, dirección, fono; – Graba en el archivo datos.xls los campos Numero deidentificación, nombre, dirección y fono (se supone que estos datos se encuentran en una planilla excel)Write #1, - Salta a la línea sgte.Close #1 – Cierra el archivo (una vez que se termino de recorrer todos los registros, se debe cerrar el archivodatos.xls)Apuntes preparado por : Rebeca Cartagena Jessen 49Archivos Secuenciales
  50. 50. Pensemos en el sgte. Ejemplo, se tiene la sgte. Hoja llamada Materiales con la sgte. informaciónCon los datos de la hoja Materiales buscaremos todos aquellos registros que tienen CRITICIDAD B, en el casode encontrarlos, se debe enviar a un archivo llamado registrar(ubicado en la Unidad D dentro de una carpetallamado Resultados y solo se copiarán los campos Código y descripción.Le mostraré antes que nada que en la unidad D, se encuentra la carpeta RESULTADOS (se debe crear)Digite la sgte. macroSub archivar()Sheets("Materiales").Activatef = 4Range("a3").SelectOpen "d:resultadosregistrar.xls" For Output As #1Do While ActiveCell <> EmptyIf Cells(f, 4) = "B" ThenWrite #1, Cells(f, 1), Cells(f, 2);Write #1,End IfApuntes preparado por : Rebeca Cartagena Jessen 50f = f + 1
  51. 51. Selection.Offset(1, 0).SelectLoopClose #1End subSi ejecuto la macro, se crea automáticamente dentro de la carpeta RESULTADO, el archivo registrarEste archivo al abrirlo contiene los registros en excel, pero solo los campos seleccionados, Código y ladescripción.Aparecen los campos juntos, pero se pueden dejar que cada campo quede en columnas separadasSeleccione las celdas A1:A6Aplique el menú Datos – Tablas en columnasSHEETS o WORSHEETS – Permite activar una hoja de cálculoLa sintaxis esSheets(“nombre de la hoja”).activate 0 Sheets(“nombre de la hoja).selectEn el ejemplo anterior hemos visto un libro que contiene varias hojas y cada hoja tiene su propio nombre.Si estando por ejemplo en la hoja Materiales y necesitamos buscar información o rescatar datos de cualquierotra hoja distinta de la que nos encontramos, se debe activar la hoja con el sheets.Ejemplo, estando en la hoja Materiales, necesito que se vaya a la hoja Pedidos y que seleccione la celda A5Sheets(“Pedidos”).activateRange(“a5”).selectApuntes preparado por : Rebeca Cartagena Jessen 51

×