Manual de Excel Macros v5

39
MICROSOFT EXCEL ® v. 5.0 MACROS LENGUAJE EXCEL v. 4.0

Transcript of Manual de Excel Macros v5

Page 1: Manual de Excel Macros v5

MICROSOFT

EXCEL® v. 5.0

MACROS

LENGUAJEEXCEL v. 4.0

Page 2: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 2 http://www.serem.com

ÍNDICE

ÍNDICE................................................................................................................................................. 2

INTRODUCCIÓN................................................................................................................................ 3

PRIMERA PARTE: DEFINICIÓN, TIPOS DE MACROS. .............................................................. 4

DEFINICIÓN ........................................................................................................................................ 4TIPOS DE MACROS............................................................................................................................. 4

MACROS AUTOMÁTICAS................................................................................................................. 5MACROS DE TECLADO ................................................................................................................... 7MACROS DE USUARIO .................................................................................................................. 11

SEGUNDA PARTE: EJECUCIÓN DE UNA MACRO.................................................................... 12

EJECUCIÓN DESDE UNA COMBINACIÓN DE TECLAS / NUEVA OPCIÓN DEL MENÚHERRAMIENTAS............................................................................................................................... 12EJECUCIÓN DESDE UN BOTÓN DE UNA BARRA DE HERRAMIENTAS .................................... 13

CREACIÓN DE UNA NUEVA BARRA DE HERRAMIENTAS / INCLUSIÓN DE BOTONES /ASIGNACIÓN DE MACROS............................................................................................................ 13PERSONALIZACIÓN DE UNA BARRA EXISTENTE / ADICIÓN DE BOTONES / ASIGNACIÓN DEMACROS ......................................................................................................................................... 17

EJECUCIÓN DESDE UN BOTÓN CREADO POR EL USUARIO...................................................... 17EJECUCIÓN DESDE HERRAMIENTAS / MACRO / EJECUTAR..................................................... 19

TERCERA PARTE: MACROS DE USUARIO................................................................................ 20

MACROS DE USUARIO..................................................................................................................... 20ESCRITURA DE MACROS. ............................................................................................................... 22

CUARTA PARTE: LENGUAJE DE MACROS DE EXCEL V. 4.0 ................................................ 26

FUNCIONES DE SELECCIÓN DE CELDA ....................................................................................... 26=SELECCIONAR(“LnCm”)............................................................................................................. 26=SELECCIONAR(“L(n)C(m)”) ........................................................................................................ 26=SELECCIONAR(“LnCm:LsCt”;“LpCr”) ....................................................................................... 26=SELECCIONAR(nombre_de_celda)............................................................................................... 26=CELDA.ACTIVA() ......................................................................................................................... 26=DESREF(referencia;número_de_filas;número_de_columnas;alto;ancho)...................................... 26

FUNCIONES DE INTRODUCCIÓN DE DATOS ............................................................................... 27=INTRODUCIR(mensaje;tipo;título;estándar;posición_horizontal;posición_vertical;ayuda) .......... 27

ESTRUCTURAS CONDICIONALES.................................................................................................. 31=SI(condición;cumple;no cumple).................................................................................................... 31=SI() / FIN.SI()................................................................................................................................. 34

ESTRUCTURAS REPETITIVAS. ....................................................................................................... 34=MIENTRAS() / =SALIR.BUCLE() .................................................................................................. 34=INTERRUMPIR()........................................................................................................................... 36

FUNCIONES DE CONTROL .............................................................................................................. 37=ESBLANCO(referencia)................................................................................................................. 37=ESTEXTO(valor) ........................................................................................................................... 37=COLUMNA(referencia) ................................................................................................................. 38=FILA(referencia)............................................................................................................................ 38=VALREF(referencia) ...................................................................................................................... 38=ECO(n).......................................................................................................................................... 38=IR.A.(referencia)............................................................................................................................ 38

EJECUCIÓN AUTOMÁTICA DE MACROS ...................................................................................... 38

Page 3: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 3 http://www.serem.com

INTRODUCCIÓN

Este manual está dedicado a el funcionamiento en general de los macros en Excel v. 5.0. Sinembargo, dado que este gestor de hojas de cálculo soporta macros escritas en dos lenguajes diferentes(Lenguaje de Macros de Excel v. 4.0 y Visual Basic), y dado que Visual Basic es un lenguaje por símismo, y que requiere un aprendizaje por separado, las operaciones que se van a contemplar incluyentodas aquellas que, relacionadas con las macros, son independientes del lenguaje en que éstas seanescritas y, por otra parte, dentro de lo que son las macros en sí, solo se estudiarán las escritas en lenguajede macros de Excel v. 4.0.

Por consiguiente, la estructura de este manual está determinada por el procedimiento seguidopor el autor en lo que respecta a la familiarización del alumnado con las macros en general y con lasmacros escritas en lenguaje de macros de Excel v. 4.0 en particular.

En primer lugar se estudiará la esencia de una macroinstrucción (Comúnmente llamadaMacro). Qué es una macro, tipos principales de Macros y formas de ejecución. Una vez superado esteprimer escalón, se procederá a estudiar el lenguaje de Macros de Excel v. 4.0.

Este lenguaje incluye mas de trescientas funciones incorporadas. El propósito de este manual noes recorrer todas y cada una de estas funciones entrando en profundos detalles sobre cada una de ellas.Esto llevaría a una obra extensa y poco útil a la hora de recurrir a ella para labores de consulta. Enrealidad, lo que se intenta es presentar al lector una serie pequeña de funciones y demostrar que,conociendo muy pocas de estas funciones, y manejándolas correctamente, se pueden crear macros quepermiten operaciones enormemente complejas.

El enfoque es, por tanto, recurrir a las estructuras clásicas de cualquier lenguaje deprogramación, y estudiar cuáles son las funciones de Excel que permitirán al programador definir estasestructuras para una macro cualquiera.

Por otra parte, el conjunto de usuarios al que este manual está destinado, está formado porpersonas que deben poseer conocimientos a nivel medio acerca del gestor de hojas de cálculo Excel v.5.0. Sólo se requiere dominar el funcionamiento habitual de cada una de las hojas de un libro de trabajoy, por supuesto, todas las operaciones relativas al funcionamiento de filas, columnas y celdas. Seríandeseables unos leves conceptos de programación, aunque, por supuesto no son imprescindibles: Cuandose estudien cada una de las diferentes estructuras, se explicará su funcionamiento y objetivo. La prácticahará el resto.

F. Borruel Cubero.

Mayo de 1.996

Page 4: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 4 http://www.serem.com

PRIMERA PARTE: DEFINICIÓN, TIPOS DE MACROS.

DEFINICIÓN

La palabra macro procede de la abreviatura de Macroinstrucción. Una Macroinstrucción sedefine como una instrucción compleja, formada por una serie de instrucciones individuales.

Si se pretende comenzar dejando esta definición suficientemente clara, sería necesario detenersey hacer un par de precisiones.

Cada vez que un usuario realiza un trabajo utilizando Excel v. 5.0, necesita dar una serie deindicaciones a la aplicación para que ésta haga las operaciones correspondientes. El usuario necesitaaumentar la anchura de una columna y, o bien recurre al sistema de menús y busca la opción Formato /Columna / Ancho, o bien coloca el puntero a la derecha del encabezado de esa columna y lo arrastrahasta obtener la anchura deseada. En cualquiera de los dos casos está dando una indicación a Excel. Leestá dando una instrucción.

Si este usuario, además de modificar la anchura de una columna determinada, necesita aplicarun formato específico a alguna celda, lo primero que tendrá que hacer es seleccionar la celda encuestión, y, una vez más, ir al sistema principal de menús o bien recurrir al botón derecho del ratón outilizar alguno de los botones de las barras de herramientas. En cualquiera de estos casos, el usuario hanecesitado dar a Excel otra instrucción para realizar la operación deseada.

Durante una sesión de trabajo, muchas secuencias de instrucciones se repiten un númeroindeterminado de veces. En el caso anterior, se han dado dos instrucciones seguidas.

Si este usuario necesita dar a Excel muchas veces esa secuencia de dos instrucciones, su trabajose simplificaría notablemente resumiendo esas dos instrucciones en una sola, de forma que al ejecutaresta nueva instrucción suma de las dos anteriores, se ejecutaran ambas con una sola orden: Esta nuevaorden, compuesta de una serie de órdenes simples es una Macroinstrucción, una macro.

Se ha expuesto el problema mas sencillo. Si la secuencia de órdenes a repetir fuera muy larga,la necesidad de una macro sería mucho mayor. Creando una macro que incluya muchas órdenes simples,el ahorro de tiempo es mucho mas evidente. Además, utilizando una macro, se tiene la seguridad de quetodas las veces que se ejecute dicha macro, el resultado va a ser el mismo. Si se da la misma serie deinstrucciones, una por una, es posible que se olvide o se modifique alguna de estas instrucciones simples,de forma que los resultados no sean siempre exactamente iguales.

Resumiendo todo lo anteriormente expuesto: Una macro se puede definir como una instruccióncompleja creada por el usuario y que incluye una serie mas o menos larga de instrucciones sencillas.

TIPOS DE MACROS

Existen en Excel v. 5.0 tres tipos diferentes de macros fundamentalmente diferenciadas por suproceso de creación: Macros Automáticas, Macros de Teclado y Macros de Usuario. Los dos últimostipos son definidos por el usuario. El primer tipo está predefinido. En otras palabras, Excel v. 5.0 incluyeuna serie de macros ya creadas y que se pueden activar o no en función de las necesidades del usuario.

Page 5: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 5 http://www.serem.com

MACROS AUTOMÁTICAS

Como se ha definido anteriormente, existen en Excel v. 5.0 una serie de macros ya creadas yque el usuario activa o desactiva a voluntad. Estas macros reciben el nombre de Macros Automáticas. Sufunción principal consiste en ejecutar operaciones automáticamente, o en agregar una serie de funcionesa las ya implementadas en Excel v. 5.0.

La secuencia de instrucciones que activa estas macros es Menú Principal / Herramientas /Macros Automáticas. Una vez elegida esta secuencia, aparece en pantalla un cuadro de diálogo similaral siguiente:

Para activar estas macros, es suficiente hacer un CLIC con el botón izquierdo del ratón dentrode la casilla de verificación correspondiente a cada una de ellas. Simultáneamente aparecerá en la parteinferior del cuadro de diálogo una breve descripción de la operación que permite la macro seleccionada.

Especial atención por su utilidad merece la macro Guardado Automático. Esta macro activauna función de autoguardado que almacena cada cierto tiempo el fichero con el que se está trabajando.Una vez activada esta macro, aparece una nueva opción en el menú Herramientas. Cuando se elige estaopción, el usuario tiene la posibilidad de establecer las características del funcionamiento del guardadoautomático a través del siguiente menú:

Page 6: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 6 http://www.serem.com

Otras dos macros que pueden destacarse son Herramientas para Análisis y Herramientaspara Análisis VBA. Estas macros añaden un gran número de funciones a las ya activas por defecto.Asimismo, su activación provoca la aparición de la opción Análisis de Datos, también en el menúHerramientas. La elección de esta nueva opción lleva al usuario al siguiente cuadro de diálogo, desdedonde puede elegir el método de análisis mas conveniente.

Solver es una macro que permite realizar búsquedas de datos, no en el sentido literal deencontrar un dato determinado en una hoja de cálculo, sino que busca el valor o valores que han de teneruna celda o serie de celdas para que una celda determinada alcance un valor objetivo. Desde Solver sepueden incluir restricciones a los diferentes valores que pueden tomar cada una de estas celdas de lasque depende la celda objetivo. Todas estas operaciones se realizan desde el siguiente cuadro de diálogo.Este cuadro de diálogo se obtiene a través de Menú Principal / Herramientas / Solver.

Plantilla para Proyección de Fotos es una macro que permite crear presentaciones utilizandohojas de cálculo y gráficos. En cierto sentido, permite operaciones típicas de presentaciones, como laspodría realizar PowerPoint v. 4.0, pero, lógicamente mucho mas limitadas. Al activar Plantilla paraProyección de Fotos, aparece una pantalla como la de la siguiente imagen. En esta pantalla, el usuariopuede especificar las imágenes que desea proyectar, los efectos de transición que se verificarán en elpaso entre una imagen y la siguiente, la velocidad con que tendrán lugar estos efectos, si el paso entreuna imagen y la siguiente se realizará automática o manualmente y el archivo de sonido asociado, en elcaso de que éste exista.

Page 7: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 7 http://www.serem.com

Para poder generar una presentación, una vez activada la macro automática, es suficiente conelegir Menú Principal / Archivo / Nuevo. Excel presentará el siguiente menú, en el que el usuario podráelegir que tipo de archivo desea crear:

MACROS DE TECLADO

Un segundo tipo de macros son aquellas que se podrían denominar Macros de Teclado. Adiferencia de las anteriores, estas macros son creadas desde el primer momento por el usuario. Sucaracterística es que dicho usuario no tiene porqué saber nada acerca del lenguaje de programación deMacros de Excel v. 4.0 ni de Visual Basic para Excel. Por decirlo de alguna manera, estas macrosescriben solas su código. Lo único que necesita saber el usuario es cómo crearlas y cómo ejecutarlas.

Para crear una macro de teclado, lo único que hay que hacer es “grabar” cada una de lasórdenes de las que consta la macro. Excel posee un dispositivo que podría llamarse “Grabadora”, de talforma que al activarla, cada paso que se da en la pantalla queda automáticamente registrado. Cuando se

Page 8: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 8 http://www.serem.com

ha terminado de dar todas las instrucciones que se desea incluir en la macro, se desactiva la grabadora yExcel queda listo para seguir funcionando normalmente.

Cuando se ejecute la macro creada, el procedimiento es el mismo que si se reprodujera unapelícula de vídeo o una cinta de cassette: Todas y cada una de las órdenes que se grabaron, se repitenautomáticamente.

En resumen, el procedimiento para crear una macro de teclado, consta fundamentalmente detres pasos:

1. Activar la grabación.2. Realizar las operaciones que se desee incluir en la macro.3. Desactivar la grabación.

Para activar la grabadora, es necesario seguir la siguiente secuencia: Menú Principal /Herramientas / Grabar Macro / Grabar nueva Macro, tal como muestra la siguiente figura:

Nada mas elegir la opción Grabar nueva macro, aparece en pantalla el siguiente cuadro dediálogo:

Page 9: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 9 http://www.serem.com

Si se pulsa el botón Opciones, este cuadro de diálogo se amplía, dando así al usuario laoportunidad de establecer todas las especificaciones inherentes a la macro que desea crear:

Algunas de las opciones que aparecen en este cuadro de diálogo son indiferentes al usuario. Porejemplo: Si se está creando una macro de teclado, importa poco en qué lenguaje se va a crear, ya que elusuario no interviene para nada en el código que se generará automáticamente según se vayan eligiendolas opciones que se desea incluir en la macro. En todo caso, las funciones de las diferentes opciones deeste cuadro de diálogo son las siguientes:

Nombre de la macro: Un nombre que el usuario desea asignar a la macro que va a crear. Esrecomendable que el nombre incluya alguna indicación de las tareas que lamacro va a realizar. De esta forma, cuando el usuario vea la lista de las macrosque ha creado, tendrá idea sobre las funciones que desempeña cada una. Estenombre no debe incluir espacios en blanco.

Descripción: No obligatoria. Permite una descripción mas detallada de las funciones desempeñadas porla macro. Por defecto, incluye el nombre del usuario y la fecha de grabación.

Asignar a: Dos de las posibles formas de ejecutar la macro, una vez creada: Desde una opción nuevaque aparecerá en el menú Herramientas, o con una combinación de la tecla CONTROL y otratecla. Esta última puede ser una mayúscula o una minúscula. Esta opción se estudiará mas enprofundidad en el apartado Ejecución de una Macro.

Almacenar en: Diferentes libros donde se puede almacenar la macro creada. La opción ESTE LIBROimplica que la macro se almacenará en una hoja mas que se incluirá en el libro detrabajo activo. En estas circunstancias, la macro solo se podrá ejecutar cuando el usuariotiene este libro abierto. La opción NUEVO LIBRO implica la apertura de un nuevo libroindependiente del libro activo. Para acceder a este nuevo libro, se puede utilizar laopción Ventana del menú principal. La opción LIBRO DE MACROS PERSONALalmacena la macro en el libro de macros PERSONAL.XLS. Este es un libro especial quegenera Excel v. 5.0 automáticamente. Este libro se almacena en el directorio EXCEL \INICIAR. El directorio INICIAR tiene la característica de que todo archivo almacenadoen él se abre automáticamente cuando arranca la aplicación. De esta afirmación sededuce que una macro almacenada en libro PERSONAL.XLS se activará

Page 10: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 10 http://www.serem.com

automáticamente al arrancar EXCEL v. 5.0 y, por consiguiente estará disponible para serejecutada independientemente de en qué libro se está trabajando.

Lenguaje: Como se ha expresado anteriormente, Excel v. 5.0 soporta macros escritas en lenguaje demacros de Excel v. 4.0 y en Visual Basic. Si el usuario no tiene intención de entrar en elcódigo de la macro para modificarlo, esta opción es superflua. La única diferencia que va aapreciar es que si la macro se graba en lenguaje de macros de Excel v. 4.0, la hoja donde seescribirá la macro llevará por defecto el nombre MACRO1. Si se escribe la macro en VisualBasic, esta hoja llevará por defecto el nombre MODULO1. En cualquiera de los dos casosesta hoja soporta las operaciones con hojas igual que cualquier otra hoja de un libro de Excelv. 5.0.

Una vez elegidas las opciones correspondientes entre las anteriores, al ACEPTAR, cadaoperación que el usuario haga sobre la pantalla, quedará registrada. En este sentido conviene señalar quesi se desea que la macro pueda ser ejecutada sobre cualquier celda y no sobre una celda o celdasdeterminadas, es importante no desplazar la celda activa del lugar que ocupe al comenzar la grabación.Un cambio de lugar de la celda activa quedará registrado como una operación mas, y por tanto, alejecutar la macro, la celda activa se desplazará siempre a la posición a la que se desplazó mientras seestaba grabando, con la consecuencia de que las operaciones posteriores afectarán solo a esa celda.

Una vez realizadas sobre la pantalla todas las operaciones que se desea incluya la macro, esimprescindible detener el proceso de grabación para poder volver a trabajar normalmente (Es decir, singrabar cada paso). Para detener la grabación, la secuencia es similar a la que se utilizó para comenzarla:Menú Principal / Herramientas / Grabar Macro / Finalizar Grabación, tal y como muestra la figurasiguiente:

Page 11: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 11 http://www.serem.com

Es obvio que estas macros están formadas por una sucesión de órdenes que se ejecutaránsecuencialmente en el orden en el que fueron grabadas, serán siempre las mismas (lógicamente) yrealizarán siempre las mismas operaciones. Esto quiere decir que nunca permitirán al usuario tomar unadecisión o incluir algún dato durante la ejecución de la macro y que su funcionamiento nunca dependeráde variables. Por consiguiente solo serán válidas para tareas estrictamente repetitivas.

Una vez grabada la macro, está dispuesta para ser ejecutada. Las diferentes formas de ejecutaruna macro son comunes a las macros de teclado y a las macros de usuario. Por tal circunstancia, seestudiarán en profundidad en la segunda parte de este manual: EJECUCIÓN DE UNA MACRO.

MACROS DE USUARIO

Tercer y último tipo de macros en Excel v. 5.0. Estas macros, a diferencia de las anterioresdeben ser escritas parcial o totalmente por el usuario. Esto implica un cierto conocimiento del lenguajede macros de Excel v. 4.0 o de Visual Basic. Este manual estará dedicado al lenguaje de macros deExcel v. 4.0. Por otra parte, estas macros serán siempre mucho mas flexibles que las anteriores, ya quesu código puede incluir peticiones de datos al usuario y estructuras alternativas o repetitivas que sonimposibles de implementar en las macros de teclado.

Una alternativa válida es crear macros de usuario escribiendo el código y utilizando lagrabadora siempre que esto sea posible. Ante la enorme cantidad de funciones diferentes y su sintaxis, aveces extremadamente complicada, es útil recurrir a la grabadora para que “traduzca” una operacióndeterminada realizada sobre la pantalla a su código correspondiente. De esta forma, el usuario se evitatener que aprender una enorme cantidad de funciones o estar recurriendo continuamente al manual deusuario.

Otra circunstancia a tener en cuenta es que muchas funciones válidas en la hoja de macros en laque se escribe el código de la macro, no lo son si se intenta introducirlas en una celda de una hoja decálculo. Por el contrario, todas las funciones válidas en una hoja de cálculo, lo son también en una hojade macros.

Una vez creadas, las macros de usuario funcionan exactamente igual en lo que se refiere a suejecución que las macros de teclado. Las posibilidades en cuanto a la ejecución de una macro seestudiarán en el siguiente apartado.

La tercera parte del manual estará íntegramente dedicada a la creación de macros de usuario,detallando una serie de funciones y su implementación dentro del código de la macro.

Page 12: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 12 http://www.serem.com

SEGUNDA PARTE: EJECUCIÓN DE UNA MACRO

Como se ha visto anteriormente, a la hora de definir las especificaciones de una macro, antes decomenzar el procedimiento de grabación, se pueden establecer dos posibilidades para su posteriorejecución. Sin embargo, estas dos posibilidades no son las únicas. En general, es posible ejecutar unamacro de cualquiera de las siguientes formas:

1. Utilizando una combinación de teclas. La tecla CONTROL pulsada simultáneamente con cualquiermayúscula o con cualquier minúscula proporcionará la ejecución de la macro que tenga asignada.

2. Una nueva opción que aparecerá en el menú HERRAMIENTAS.3. Un botón de una barra de herramientas.4. Un botón creado por el usuario.5. Desde el menú HERRAMIENTAS / MACRO / EJECUTAR.

Se parte de la base de que se ha creado una macro, y se desea, o bien modificar lascaracterísticas de ejecución establecidas al comenzar la grabación, o bien estas características no se hanestablecido todavía por tratarse de una macro de usuario. Esta macro ha sido escrita y ahora se necesitaprobarla, para lo cual es necesario proceder a su ejecución. Se estudiarán a continuación y por separadocada uno de estos posibles métodos.

EJECUCIÓN DESDE UNA COMBINACIÓN DE TECLAS / NUEVA OPCIÓNDEL MENÚ HERRAMIENTAS

Si el usuario desea que una macro se pueda ejecutar pulsando simultáneamente la teclaCONTROL junto con otra tecla, o desea que dicha macro se ejecute desde una nueva opción del menúHERRAMIENTAS, debe acceder al cuadro de diálogo que permite establecer las opciones de una macro.Este cuadro de diálogo es similar al que se utiliza cuando se crea una macro con la grabadora.

Para poder establecer todas las características de una macro, la secuencia que se debe seguir esla siguiente: Menú Principal / Herramientas / Macro. Este cuadro de diálogo aparece en la figurasiguiente. En él aparecerán todas las macros disponibles. Se elegirá aquella cuyas características se deseamodificar haciendo un clic sobre su nombre con el botón izquierdo del ratón: Su nombre aparecerá en lalínea superior. En la figura está seleccionada la macro TNR_Roja_T_20.

Page 13: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 13 http://www.serem.com

Una vez seleccionada la macro cuyas características se desea establecer o modificar, al pulsarOPCIONES, se accede al cuadro de diálogo que permite tales modificaciones:

Desde este cuadro se pueden activar las opciones Elemento del menú Herramientas y Métodoabreviado. Si se activa la primera opción, deberá escribirse el texto que se desea aparezca como opcióndentro del menú Herramientas. Si se activa la segunda, deberá incluirse la tecla que debe pulsarse juntocon CONTROL para ejecutar la macro. Pulsando ACEPTAR en el cuadro de diálogo actual y CERRARen el siguiente, las características de ejecución de la macro quedarán definitivamente establecidas.

EJECUCIÓN DESDE UN BOTÓN DE UNA BARRA DE HERRAMIENTAS

Otra posibilidad consiste en asignar la ejecución de una macro a un nuevo botón que puedeaparecer en una de las barras de herramientas existentes en Excel v. 5.0 o en una nueva barra deherramientas creada por el usuario. En este segundo caso, primero es necesario saber cómo se crea unanueva barra de herramientas.

CREACIÓN DE UNA NUEVA BARRA DE HERRAMIENTAS / INCLUSIÓN DEBOTONES / ASIGNACIÓN DE MACROS

Para crear una nueva barra de herramientas es necesario recurrir a la secuencia Menú Principal/ Ver / Barras de Herramientas. Inmediatamente aparecerá un cuadro de diálogo como el que muestra lafigura siguiente. En él aparece la lista de todas las barras de herramientas de Excel v. 5.0. Aquellas quepresentan la casilla de verificación activada son las que están presentes en pantalla.

Para crear una nueva barra de herramientas, es suficiente escribir el nombre que se le desea dara esa nueva barra en la parte inferior del cuadro de diálogo, en la zona denominada NOMBRE DE LABARRA.

Page 14: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 14 http://www.serem.com

En este caso, se ha borrado el nombre que aparecía por defecto (Estándar) y se ha escrito unonuevo (Manual de Excel 5):

Una vez escrito el nuevo nombre, al aceptar, aparecerá el cuadro de diálogo que muestra lapágina siguiente. En él aparecen las diferentes categorías de botones existentes en Excel v. 5.0. Dentrode la ventana de categorías, en la parte izquierda del cuadro, la última de todas es PERSONALIZADAS.En la parte de la derecha de la ventana están los botones disponibles para cada categoría. Los botonesincluidos en PERSONALIZADAS no tienen tarea asignada y están pensados para que sea el usuario elque les asigne una tarea.

En la misma figura de la página siguiente aparece también la nueva barra de herramientascreada como un pequeño recuadro. Este tamaño es debido a que la barra existe, pero está vacía debotones. Cuando el usuario vaya añadiendo botones el tamaño de la barra irá aumentandoautomáticamente.

Page 15: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 15 http://www.serem.com

El siguiente paso consiste en arrastrar el botón elegido de entre los predefinidos hasta la nuevabarra creada. Al soltar el botón encima de dicha barra aparece automáticamente el cuadro siguiente:

En este cuadro, el usuario elegirá la macro que desea asignar al botón que ha arrastrado. AlACEPTAR, Excel le deja otra vez en la ventana anterior para que elija nuevos botones y asigne lasmacros correspondientes. Si no se desea seguir, la opción CERRAR le devuelve a la forma normal detrabajo.

Page 16: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 16 http://www.serem.com

Sin embargo, desde la ventana de personalizar, se puede realizar otra operación que puederesultar útil. Si se pulsa el botón derecho del ratón encima del botón que se acaba de arrastrar, apareceráun menú que permite, entre otras operaciones, personalizar la imagen que aparece en la cara del botón:

Si en este nuevo menú, se elige la opción EDITAR LA IMAGEN DEL BOTÓN, Excel lleva alusuario al EDITOR DE BOTONES, cuya imagen aparece en la figura siguiente, y que permitirámodificar la imagen de la cara del botón:

Page 17: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 17 http://www.serem.com

ACEPTAR en este cuadro y CERRAR en el siguiente terminará con el proceso de crear unanueva barra de herramientas y añadir botones destinados a la ejecución de macros.

PERSONALIZACIÓN DE UNA BARRA EXISTENTE / ADICIÓN DEBOTONES / ASIGNACIÓN DE MACROS

El procedimiento es exactamente igual que el anterior, pero mas sencillo dado que en lugar decrear una nueva barra, se utilizará una que ya existe. En este caso, desde Menú Principal / Ver / Barrasde Herramientas / Personalizar se arrastrará el botón seleccionado directamente a la barra deherramientas deseada. Lógicamente esta barra de herramientas destino debe estar presente en pantallapara poder arrastrar el botón encima de ella. Para que una barra esté presente en pantalla es suficientecon activar su correspondiente casilla de verificación.

El resto de operaciones es exactamente igual que el descrito para el caso anterior.

EJECUCIÓN DESDE UN BOTÓN CREADO POR EL USUARIO

En general a esta posibilidad se la define como ejecución de una macro desde un botón. Enrealidad el sentido es mas amplio, desde el punto de vista de que una macro se puede ejecutar desdecualquier objeto que se dibuje sobre una hoja de cálculo. Cualquiera de los objetos dibujados en la hojade cálculo que aparece en la siguiente figura, presenta el mismo menú que aparece para el casoparticular del botón. Para obtener este menú, es suficiente pulsar el botón derecho del ratón con elpuntero situado encima de cualquiera de ellos. Una vez obtenido este menú en pantalla, la opciónAsignar Macro que aparece en la última posición permite al usuario especificar qué macro desea que seejecute cuando se haga un CLIC con el botón izquierdo del ratón estando situado encima de cualquierade ellos.

Page 18: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 18 http://www.serem.com

En el caso del botón, la última posibilidad consistiría en cambiar el texto que aparece en elfrente y escribir algo mas descriptivo acerca de la operación que se ejecutará al pulsar el botón.

Para poder escribir es necesario seleccionar el botón, pero para poder seleccionar el botón sinque se ejecute la macro que tiene asignada, es necesario mantener pulsada la tecla CONTROL. En casocontrario, al hacer un CLIC con el botón izquierdo del ratón sobre el botón, se ejecutará la macroasignada. La secuencia será entonces: Tecla CONTROL pulsada y clic con el botón izquierdo del ratónencima del botón de la macro. Este botón aparecerá con una línea y puntos alrededor. Estos puntossirven para modificar sus proporciones. Si se sitúa el puntero del ratón encima del botón cuando ésteestá seleccionado, al hacer otro CLIC con el botón izquierdo del ratón, se situará el cursor en su interior,pudiendo entonces borrar el texto por defecto y añadir el nuevo texto.

Una vez que se ha finalizado la operación de asignar la macro y modificar el texto, seríadeseable que este objeto no pudiera modificarse por error. La única forma de asegurar el funcionamientodel botón es protegerlo. Para proteger un objeto cualquiera es necesario que las opciones de protecciónde ese objeto estén activadas y que la hoja tenga también activa la protección de objetos.

En el primero de los casos, a través de la secuencia Botón Derecho del Ratón / Formato delobjeto / Protección:

Una vez que se ha comprobado que las protecciones particulares de este objeto están activadas,es necesario que la protección general de la hoja de cálculo también esté activada.

La secuencia que da acceso a la protección de la hoja es: Menú Principal / Herramientas /Proteger documento / Proteger Hoja, que da acceso al siguiente cuadro:

Page 19: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 19 http://www.serem.com

La configuración que presenta la figura anterior deja libres las celdas y los escenarios, peroprotege los objetos para que éstos no puedan ser editados. La adición de una contraseña es opcional.Salvo en casos muy concretos no es necesaria, pues seguramente el objeto deba sufrir todavía algunosretoques antes de que quede definitivamente configurado y ahorra tiempo y trabajo el no tenerestablecida una contraseña. En cualquier caso, una vez terminada definitivamente la hoja de cálculo,siempre se puede incluir si resulta necesaria.

EJECUCIÓN DESDE HERRAMIENTAS / MACRO / EJECUTAR

Esta opción es accesible desde el mismo cuadro de diálogo que daba acceso a las propiedades delas macros y que se ha visto anteriormente. La secuencia lleva a dicho cuadro:

En este cuadro se selecciona la macro que se desea ejecutar, y una vez seleccionada, el botónEJECUTAR la activará.

El botón EDITAR llevará al usuario a ver el código de la macro y el botón PASO A PASOejecutará la macro secuencia por secuencia con objeto de una posible evaluación de cada uno de suspasos. Esta operación se estudiará en profundidad en el siguiente capítulo.

Page 20: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 20 http://www.serem.com

TERCERA PARTE: MACROS DE USUARIO.

MACROS DE USUARIO

Las macros de usuario se diferencian del resto de tipos de macros posibles en Excel v. 5.0 enque es el usuario el que tiene que crear el código correspondiente escribiendo cada una de las sentenciasque posteriormente se ejecutarán, y desarrollarán las operaciones para las que la macro fue diseñada.Esto no quiere decir que el usuario tenga necesariamente que teclear instrucción por instrucción. Es útilaprovechar los servicios de la grabadora de macros para que escriba instrucciones correspondientes aoperaciones que se pueden efectuar desde la pantalla. La utilización de la grabadora creará una nuevamacro. Después se pueden copiar las instrucciones escritas automáticamente al código de la macro que elusuario está desarrollando. De este modo, escribiendo las instrucciones imprescindibles, y aprovechandola facilidad de la grabadora de macros, se pueden escribir macros extremadamente complejas sinnecesidad de aprender o consultar la sintaxis de funciones como formato de celdas, anchura decolumnas, copiar, cortar, pegar, pegado especial, borrar, abrir archivo, cerrar archivo, imprimir, alinearetc..

El paso previo imprescindible para comenzar a escribir una macro consiste en añadir al libroactivo una hoja de macros. Esta tiene un tipo especial de formato que permite que se vean las funcionesque se van escribiendo. Si en una hoja de cálculo normal, se introduce una función en una celda, nadamas teclear <ENTER>, la función desaparece y la celda muestra el valor que toma esa función. En unahoja de macros, este valor no se ve, y en su lugar permanece siempre visible el texto de la funciónintroducida.

Para insertar una hoja de macros, solo es necesario pulsar el botón derecho del ratón sobrealguna de las etiquetas de las hojas que aparecen en la parte inferior de la pantalla. Inmediatamente, elusuario tendrá acceso al menú de operaciones con hojas, tal y como muestra la figura siguiente:

Page 21: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 21 http://www.serem.com

Al elegir la opción INSERTAR, aparece el siguiente menú, donde el usuario elige el objeto quedesea insertar:

Tres posibilidades permiten elegir qué tipo de hoja de macros puede ser insertada en un Librode Trabajo de Excel v. 5.0:

1. Macro de Microsoft Excel v.4.0: Hoja estándar de macros. Permite redactar macros en Lenguaje deMacros de Excel v. 4.0. Es el tipo de hoja que se utilizará siempre para los ejemplos de este manual.En sentido amplio, es el tipo de hoja que se debe utilizar para escribir macros en Lenguaje de Macrosde Excel v. 4.0.

2. Módulo: Hoja que permite escribir macros en lenguaje Visual Basic. Como ya es sabido, Excel v. 5.0también acepta macros escritas en Visual Basic. Cuando se desee crear una macro en este lenguaje,es necesario insertar una hoja de este tipo.

3. Hoja Internacional de Macros: En Lenguaje de Macros de Excel v. 4.0 - a diferencia de otroslenguajes - cada idioma tiene su propio conjunto de funciones. Así, por ejemplo, si se está trabajandoen Español, para realizar la operación de pegado, se utiliza la función =PEGAR(). Si se estuvieratrabajando en Inglés, dicha función sería =PASTE(). Si se está trabajando con una macro escrita enuna hoja normal de macros, y se incluye la función =PASTE(), esta función sólo será reconocida siExcel se está ejecutando en su versión en Inglés. La ventaja que tiene trabajar con HojasInternacionales de Macros es que en ellas se pueden escribir las funciones en inglés y traducirlas acualquier idioma. Estas macros se ejecutarán siempre independientemente del idioma que tengaconfigurada la versión de Excel con la que después se ejecuten dichas macros. Si se abre una hojainternacional de macros, independientemente de la versión idiomática de Excel que se estéutilizando, todas las funciones tendrán nombre en inglés. Si se escriben las funciones en inglés encualquier hoja internacional de macros, al copiar estas funciones a una hoja normal de macros, setraducirán automáticamente al idioma de la versión de Excel que se esté utilizando. Por supuesto sise va a trabajar siempre con la misma versión de Excel, todas estas consideraciones carecen desentido.

Una vez insertada la hoja de macros con la que se desea trabajar, aparecerá la etiquetacorrespondiente a esa hoja en la línea de etiquetas de la pantalla. Si esta hoja insertada es una hoja deMacros, la etiqueta será por defecto Macro1 para la primera hoja que se inserte, Macro2 para la segunday así sucesivamente.

Llegado este momento, el aspecto de la pantalla difiere ligeramente del que ésta toma cuando seestá trabajando con una hoja de cálculo. Las columnas aparecen con mayor anchura.

Las operaciones habituales de Formato, Ancho de columna, Alto de fila, Copiar, Cortar, Pegar,Insertar, Eliminar, sin embargo, funcionan exactamente igual que para una hoja de cálculo.

Asimismo, los botones de las barras de herramientas y el conjunto de opciones del sistema demenús mantienen su funcionamiento exactamente igual que para las hojas de cálculo. Sólo un pequeñoconjunto de opciones del sistema principal de menús están desactivadas. Por ejemplo, el menúHerramientas presenta desactivadas las opciones Objetivos y Administrador de escenarios. La opciónDatos presenta desactivadas las opciones Tabla y Tablas Dinámicas.

Page 22: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 22 http://www.serem.com

ESCRITURA DE MACROS.

En este punto, la pantalla presenta un aspecto similar a la figura siguiente:

El usuario puede situarse en cualquier celda y comenzar a redactar las funciones que formaránel código de la macro.

Pueden darse una serie de normas generales que ayudarán a la hora de comenzar a redactar unamacro:

1. Es recomendable dejar la primera celda de la macro reservada para su nombre y, en su caso, para laletra de activación. En este sentido cabe resaltar que al ser el lenguaje de Macros de Excel v. 4.0totalmente funcional (es decir, totalmente formado por funciones), todas las celdas que alberguen unafunción deben comenzar por un símbolo igual (=). Salvo en el caso de asignación de variables,aquellas que no comiencen por =, serán consideradas comentarios y no serán tenidas en cuenta a lahora de la ejecución. Un ejemplo de primera celda podría ser el siguiente:

TNR_Roja_T_20 (t)

2. Todas las macros deben terminar con la función =VOLVER(). Esta función desactiva la macro ydevuelve el control a Excel v. 5.0. En casos especiales, como pueden ser algunas estructurasconcretas, esto no será necesario, pero, en general toda macro termina con =VOLVER().

3. Es muy recomendable escribir siempre las funciones en letra minúscula. Si la expresión está bienredactada, al pulsar <ENTER>, se situará en el interior de la celda en la que se esté escribiendo enletra mayúscula. Esta conversión de mayúscula a minúscula se realiza de forma totalmenteautomática y sirve para detectar errores. Si al pulsar <ENTER>, la función escrita en minúsculas noaparece en la celda en mayúsculas, probablemente se ha cometido algún error.

Page 23: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 23 http://www.serem.com

4. Es posible asignar diferentes formatos a celdas que se desee estén resaltadas, por ejemplo,escribiendo su contenido en otro color o con otro tipo de letra. Los diferentes formatos no influyen ala hora de ejecutar la macro.

Una vez escrita la macro, el aspecto que presenta es similar al siguiente:

Esta pequeña macro de ejemplo, selecciona la celda A1,copia su contenido, selecciona la celda A2 y lo pega.

El código ha sido escrito. Ahora es necesario decir a Excelque esa secuencia de funciones que se han introducido en unconjunto de celdas, se han de ejecutar secuencialmente y que en suconjunto forman una macro, es decir, no son un conjunto deinstrucciones por separado. Para ello habrá que decir dónde

comienza, dónde termina, cual es su nombre, que es un comando (una orden) y las teclas a través de lascuales se ejecutará. Para establecer todas estas especificaciones se utiliza el mismo procedimiento quecuando se asigna nombre a una celda. En realidad, lo que se está haciendo es tratar este conjunto deceldas como si fuese una sola. Para llevar a cabo este procedimiento, se recurre a la secuencia: MenúPrincipal / Insertar / Nombre / Definir tal como se aprecia en la figura siguiente:

Esta secuencia de elecciones llevará al usuario al cuadro de diálogo a través del cual se puedenestablecer las especificaciones mencionadas anteriormente sobre la macro recién creada:

Page 24: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 24 http://www.serem.com

En este cuadro, primero se selecciona el nombre de la macro. Por defecto aparece el nombreescrito en la primera celda. Es necesario comprobar que en la fila rotulada como “SE REFIERE A:”aparece la dirección correcta de las celdas en las que se ha escrito la macro.

Una vez comprobado el nombre y la dirección correcta de las celdas, en el recuadrocorrespondiente a “MACRO” se estable que lo que se acaba de crear es un comando y que se ejecutarácon la combinación de teclas CONTROL+ una letra cualquiera. (En este caso, la c minúscula).

En categoría se define que está definida por el usuario, es decir, no incluida en ninguna de lascategorías preestablecidas en Excel v. 5.0. Esta opción se utiliza sobre todo si se fuera a definir elconjunto de instrucciones generado por el usuario como una función a incluir dentro de alguna de lascategorías de Excel v. 5.0. Este no es el caso, luego la categoría elegida será DEFINIDAS POR ELUSUARIO.

La opción ELIMINAR de este cuadro de diálogo solo sirve para eliminar macros creadas conVisual Basic. Para eliminar una macro creada con Lenguaje de Macros de Excel v. 4.0, es necesarioeliminar la hoja en la que está escrita la macro.

Una vez realizadas todas estas operaciones, se puede regresar a una hoja de cálculo cualquiera yejecutar la macro. Si el funcionamiento es correcto, puede procederse a asignar su funcionamientomediante alguna de las posibilidades descritas anteriormente.

Si la macro presentase algún fallo, aparecerá en pantalla el siguiente cuadro de diálogo:

La opción PASO A PASO permite recorrer toda la macro sentencia por sentencia evaluando elresultado de cada una de ellas y, de esta forma, rastrear el error de la manera mas sencilla posible. La

Page 25: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 25 http://www.serem.com

opción de realizar un rastreo paso a paso también aparece en el cuadro de dialogo obtenido desde MenúPrincipal / Herramientas / Macro:

La elección de esta opción lleva al siguiente cuadro:

El usuario pude utilizar la opción EVALUAR. Pulsando repetidamente este botón, la macroejecuta un paso, presenta el resultado de la ejecución de dicho paso, ejecuta el siguiente, y asísucesivamente hasta que recorre todas y cada una de las instrucciones de la macro. De esta forma sefacilita el trabajo de seguimiento de valores y de posibles errores. Cuando detecta uno de éstos, la opciónIR A lleva directamente a la celda donde se ha detectado del error. Esto es evidentemente inmediatocuando la macro es pequeña, pero ante una macro formada por cientos de instrucciones, es una forma deahorrar tiempo y trabajo.

Page 26: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 26 http://www.serem.com

CUARTA PARTE: LENGUAJE DE MACROS DE EXCEL v. 4.0

Hasta aquí se ha estudiado la forma de crear una macro en Excel v.5.0, pero una macro estáintegrada siempre por un conjunto de funciones que permiten establecer determinadas estructuras yrealizar determinadas operaciones. Como ya ha sido dicho, muchas de estas funciones se pueden obtenerdirectamente a través de la grabadora. Sin embargo, otro gran conjunto de funciones no tienenposibilidad de ser obtenidas desde la pantalla. A estas funciones se dedicará esta última parte delmanual.

Las funciones han sido separadas por operaciones o estructuras. De este modo se agruparánfunciones que permiten operaciones similares o que colaboran parra llevar a cabo una única operación.

FUNCIONES DE SELECCIÓN DE CELDA

Una de las operaciones mas frecuentes que es necesario realizar durante el trabajo con una hojade cálculo es la desplazar la celda activa de una posición determinada a otra. A continuación se presentauna serie de funciones que permiten llevar a cabo operaciones de selección de celda.

=SELECCIONAR(“LnCm”)Esta función colocará la celda activa en la posición correspondiente a la fila n y columna m. En

el ejemplo de la página 23 se utiliza esta función para seleccionar primero la celda A1 y luego la celdaA2.

=SELECCIONAR(“L(n)C(m)”)Similar a la anterior, esta función, en lugar de seleccionar directamente una fila y una columna,

lo que hace es desplazar la celda activa n filas y m columnas desde la posición actual de la celda activa.Si la celda activa está en A1 y se ejecuta la función =SELECCIONAR(“L(2)C(2)”), el resultado será quela celda activa se posicione dos filas mas abajo y dos columnas mas a la derecha de la celda A1.Concretamente, se situaría en la celda C3.

=SELECCIONAR(“LnCm:LsCt”;“LpCr”)Esta función selecciona el rango LnCm:LsCt y deja como celda activa la celda LpCs

perteneciente a dicho rango. Los valores n, s y p corresponden a números de fila y los valores m, t, rcorresponden a números de columna.

=SELECCIONAR(nombre_de_celda)Donde nombre_de_celda es el nombre asignado a una celda concreta o a un rango. Esta

función seleccionará al ejecutarse el rango nombre_de_celda.

=CELDA.ACTIVA()Devuelve la referencia actual de la celda activa independientemente de cual sea ésta.

=DESREF(referencia;número_de_filas;número_de_columnas;alto;ancho)Devuelve una referencia relativa a partir de referencia.Donde:

referencia: Es una referencia cualquiera. Puede utilizarse aquí la funciónCELDA.ACTIVA(). De esta forma tomará la referencia de la celda activaindependientemente de dónde se encuentre ésta.

Número_de_filas: La cantidad de filas desde referencia.

Page 27: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 27 http://www.serem.com

Número_de_columnas: Cantidad de columnas desde referencia.Alto: Número de filas de la selección.Ancho: Número de columnas de la selección.

Resumen: La función DESREF devuelve la referencia de un rango de alto filas y anchocolumnas. Este rango está situado a Número_de_filas filas de referencia y a Número_de_columnascolumnas de referencia.

Esta función se puede utilizar conjuntamente con SELECCIONAR y con CELDA.ACTIVA().Un ejemplo de utilización conjunta de estas tres funciones sería el siguiente:

=SELECCIONAR(DESREF(CELDA.ACTIVA();3;3;2;2))

Esta expresión seleccionará un rango de dos filas de alto y dos columnas de ancho. Este rangoestará situado tres columnas a la derecha de la celda activa y tres filas mas abajo. Si se supone que lacelda activa es B1, el rango seleccionado será E4:F5.

FUNCIONES DE INTRODUCCIÓN DE DATOS

Una de las características de las macros de teclado es su independencia del usuario una vez hacomenzado su ejecución. Esto quiere decir que el usuario no puede intervenir añadiendo datos oeligiendo opciones.

Para resolver esta situación se utilizan las macros de usuario. Estas macros si que puedendiseñarse para que, en determinados momentos el usuario sea requerido para elegir una opción ointroducir un dato. Esta operación de petición de datos se realiza fundamentalmente a través de lasiguiente función:

=INTRODUCIR(mensaje;tipo;título;estándar;posición_horizontal;posición_vertical;ayuda)

Esta función genera un cuadro de diálogo a través del cual el usuario puede introducir los datosque desee. Este cuadro de diálogo se diseña mediante las opciones del argumento de la función. Elsignificado de cada una de estas partes del argumento es el siguiente:

mensaje: El mensaje que aparece en el interior del cuadro de diálogo. Puede ayudar al usuario asaber qué datos debe introducir. Debe ser introducido entre comillas.

tipo: Tipo de datos que aceptará el cuadro de diálogo. Este tipo de datos se define mediante uncódigo. El código correspondiente a cada tipo de datos es el siguiente:

TIPO DEDATO

NÚMERODE CÓDIGO

Fórmula 0Número 1Texto 2Valor Lógico 4Referencia 8Error 16Matriz 64

título: Texto que aparecerá en la barra de título del cuadro de diálogo. Si se omite, el título pordefecto será “Introducir”. Debe ser introducido entre comillas.

Page 28: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 28 http://www.serem.com

estándar: Valor que aparecerá por defecto.

posición_horizontal: Posición que ocupará el cuadro de diálogo en sentido horizontal en lapantalla.

posición_vertical: Posición que ocupará el cuadro de diálogo en sentido vertical en la pantalla.

ayuda: Indicará el archivo y tema de ayuda que se presentará al pulsar el botón de ayuda.

A continuación, un ejemplo de función =Introducir:

=INTRODUCIR(“Introduzca la fecha de nacimiento”;1;”Introducción de datos”;;100;100;)

En este caso se ha omitido el valor estándar (valor por defecto) y el archivo de ayuda (últimaparte del argumento). El resultado es el siguiente:

Por lo que se ha visto hasta ahora, mediante esta función se pueden introducir datos durante laejecución de una macro, sin embargo quedan una serie de problemas por resolver. El primero es queestos datos que se han introducido deben ser almacenados en algún “lugar” para después poder recurrir aellos. Si no se especifica un “lugar” de almacenamiento, los datos se pueden introducir, pero, una vezintroducidos, se pierden.

Es necesario, pues, definir alguna forma de que estos datos se almacenen en memoria parapoder recurrir a ellos en cualquier momento. Para almacenar estos datos introducidos existen dosposibilidades:

1. Definir una variable.2. Definir un nombre para la celda en la que está escrita la función Introducir.

En el primero de los casos, la expresión sería:

Fecha_de_Nacimiento=INTRODUCIR(“Introduzca la fecha de nacimiento”;1;”Introducción de datos”;;100;100;)

Donde Fecha_de_Nacimiento es el nombre de una variable que almacenará el valor introducidoa través de la función Introducir. Una variable actúa como un depósito temporal de datos. El valorintroducido queda en ese depósito dispuesto para poder operar con él. Se llaman variables a estosdispositivos porque no tienen un valor fijo asignado. En cada caso toman el valor que se introduzca.

La segunda de las posibilidades es dar un nombre a la celda donde está escrita la funciónintroducir. En este caso, es ese nombre de celda el que actúa como variable. Para dar nombre a una celdase utiliza la secuencia Menú Principal / Insertar / Nombre / Definir. En este caso es suficiente conescribir la función. Excel se encarga de hacer que la celda nombrada asuma el valor de los datosintroducidos a través de =Introducir.

A continuación aparece un ejemplo de macro. Cada una de las sentencias lleva en la líneasiguiente la explicación de su funcionamiento. En esta macro aparece también la función =formula(). Laacción de esta función es colocar datos en la celda activa.

Page 29: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 29 http://www.serem.com

El objetivo de esta macro es dejar que el usuario seleccione una celda cualquiera, pedirle unafecha de nacimiento y calcular la edad actual de la persona nacida en esa fecha. El cálculo se ha derealizar independientemente de qué día se ejecute la macro. En otras palabras, la edad calculada debeestar actualizada.

Cálculo_de_Edades (c)Nombre y letra de Ejecución de la macro.Celda_Inicial=INTRODUCIR("Introduzca la celda comienzo";8;"Cálculo de edades";;100;100;)Petición de la celda donde se comienza a colocar los datos. Asignación a la variableCelda_Inicial

=SELECCIONAR(Celda_Inicial)Selección de la celda introducida a través de la función =Introducir.=FORMULA("La fecha de nacimiento es:")Colocación del texto "La fecha de nacimiento es:" en la celda seleccionada.=SELECCIONAR("lc(1)")Selección de una celda una columna a la derecha de la celda activa.=INTRODUCIR("Introduzca la fecha de nacimiento";1;"Cálculo de edades";;100;100;)Petición de la fecha de nacimiento. La celda superior está nombrada como F_Nacimiento.=FORMULA(F_Nacimiento)Colocación del valor de F_Nacimiento en la celda activa.Edad=ENTERO((AHORA()-F_Nacimiento)/365)Cálculo de la edad y asignación de este valor a la variable Edad.=SELECCIONAR("l(1)c(-1)")Selección de una celda una fila mas abajo y una columna a la izquierda.=FORMULA("La edad es:")Colocación en la celda activa del texto "La edad es:"=SELECCIONAR("lc(1)")Selección de una celda una columna a la derecha.=FORMULA(Edad)Colocación del valor de la variable Edad.=VOLVER()Fin de la ejecución de la macro.

Las filas sombreadas son las que corresponden al código de la macro. Las filas en blancocontienen la explicación acerca del contenido de la celda de la fila superior.

Si se ejecuta esta macro tal y como está escrita, el resultado será el siguiente:

B C3 La fecha de n 221954 La edad es: 35

Suponiendo que la celda inicial elegida por el usuario haya sido B3. Es obvio que existe unproblema con las anchuras de las columnas y con el formato de las celdas. Es el momento idóneo parautilizar la grabadora y crear una macro que dé formato de fecha a la celda (C3 en este caso concreto) yhaga un ajuste automático de anchura a las columnas. Una vez creada esta macro, se copiaran lasórdenes y se incluirán en los lugares correspondientes de la macro Cálculo_de_Edades.

En la siguiente figura aparece el código de la nueva macro creada a través de la grabadora:

Macro1=FORMATO.NUMERO("d-mmm-aa")=ANCHO.COLUMNA(;;;3)

Page 30: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 30 http://www.serem.com

=VOLVER()

En este caso lógicamente no importan las especificaciones de nombre, descripción ni ejecución,ya que solo va a servir para copiar sus órdenes. Sólo importa que esta macro se redacte en Lenguaje demacros de Excel v. 4.0 y se almacene en el libro de trabajo activo.

Una vez copiadas las órdenes de esta nueva macro a sus lugares correspondientes de la macroCálculo_de_Edades, el listado final de esta macro será el siguiente:

1 Cálculo_de_Edades (c)2 Nombre y letra de Ejecución de la macro.3 Celda_Inicial=INTRODUCIR("Introduzca la celda comienzo";8;"Cálculo de

edades";;100;100;)4 Petición de la celda donde se comienza a colocar los datos. Asignación a la variable

Celda_Inicial

5 =SELECCIONAR(Celda_Inicial)6 Selección de la celda introducida a través de la función =Introducir.7 =FORMULA("La fecha de nacimiento es:")8 Colocación del texto "La fecha de nacimiento es:" en la celda seleccionada.9 =SELECCIONAR("lc(1)")10 Selección de una celda una columna a la derecha de la celda activa.11 =INTRODUCIR("Introduzca la fecha de nacimiento";1;"Cálculo de edades";;100;100;)12 Petición de la fecha de nacimiento. La celda superior está nombrada como F_Nacimiento.13 =FORMULA(F_Nacimiento)14 Colocación del valor de F_Nacimiento en la celda activa.15 =FORMATO.NUMERO("d-mmm-aa")16 Asignación de formato de fecha a la celda activa.17 Edad=ENTERO((AHORA()-F_Nacimiento)/365)18 Cálculo de la edad y asignación de este valor a la variable Edad.19 =SELECCIONAR("l(1)c(-1)")20 Selección de una celda una fila mas abajo y una columna a la izquierda.21 =FORMULA("La edad es:")22 Colocación en la celda activa del texto "La edad es:"23 =SELECCIONAR("lc(1)")24 Selección de una celda una columna a la derecha.25 =FORMULA(Edad)26 Colocación del valor de la variable Edad.27 =SELECCIONAR(DESREF(CELDA.ACTIVA();-1;-1;2;2))28 Selecciona el rango donde se han introducido datos.29 =ANCHO.COLUMNA(;;;3)30 Realiza un ajuste automático de ancho de columna.31 =SELECCIONAR("l1c1")32 Selecciona la celda A1.33 =VOLVER()34 Fin de la ejecución de la macro.

Filas 15 y 16: Formato de fecha.Filas 27 y 28: Selección del rango formado por 2 filas y dos columnas.Filas 29 y 30: Ajuste automático de anchura de columna.Filas 31 y 32: Opcionales. Se han añadido solo para deshacer la selección del rango de datos.

Una vez añadidas estas sentencias, el resultado ahora es el siguiente:

A B

Page 31: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 31 http://www.serem.com

2 La fecha de nacimiento es: 6-oct-603 La edad es: 35

Suponiendo que se haya partido de la celda A2 como celda inicial.

ESTRUCTURAS CONDICIONALES.

A veces es necesario que la ejecución de cualquier programa realice diferentes operaciones enfunción de determinadas circunstancias. Estas circunstancias pueden venir dadas por valores de unavariable o por diferentes elecciones que puede hacer el usuario. Sería algo así como si en el lenguajenormal se dijera: Si ocurre este evento, realiza esta determinada serie de operaciones, si ocurre este otro,realiza esta otra serie y si no ocurre nada, esta tercera.

Situaciones como la descrita en el párrafo anterior se llaman en programación ESTRUCTURASCONDICIONALES O ALTERNATIVAS. Dependiendo de unos parámetros iniciales, el programa (lamacro) realizará una u otra operación.

En Lenguaje de Macros de Excel v. 4.0, la función mas importante que permite crear este tipode estructuras es la función =SI().

=SI(condición;cumple;no cumple)Esta función puede actuar en hojas de macros de una forma igual que en hojas de cálculo. Sin

embargo, dada la estructura secuencial de una macro, las posibilidades se amplían notablemente.

Las partes del argumento de esta función son las siguientes:

condición: Una comparación lógica. Permite establecer un criterio que la función analizará.

cumple: La operación que la macro debe realizar en el caso de que se cumpla el criterioespecificado en condición.

no cumple: La operación que la macro debe realizar en el caso de que no se cumpla el criterioestablecido en condición.

En el caso concreto de la macro anterior, se podría utilizar la función =SI() para dosoperaciones diferentes: Primero, para regular el funcionamiento del botón CANCELAR del cuadro dediálogo generado por =Introducir. Por otra parte se podría utilizar para calcular también el día de lasemana correspondiente a la fecha de nacimiento introducida.

Por lo que respecta a la primera de las dos operaciones, cuando se pulsa el botón CANCELARen el cuadro de diálogo que pide una celda inicial, Excel presenta automáticamente un mensaje de error.Lo deseable sería que al pulsar CANCELAR terminara la ejecución de la macro y no apareciera ningúnmensaje.

Para realizar estas operaciones, se han añadido a la macro original una serie de instruccionesque aparecen en el cuadro de la página siguiente:

Page 32: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 32 http://www.serem.com

1 Cálculo_de_Edades (c)2 Nombre y letra de Ejecución de la macro.3 Celda_Inicial=INTRODUCIR("Introduzca la celda comienzo";8;"Cálculo de

edades";;100;100;)4 Petición de la celda donde se comienza a colocar los datos. Asignación a la variable

Celda_Inicial

5 =SI(Celda_Inicial<>0;VOLVER())6 Comprueba si ha habido cambios en el valor de Celda_Inicial.7 =SELECCIONAR(Celda_Inicial)8 Selección de la celda introducida a través de la función =Introducir.9 =FORMULA("La fecha de nacimiento es:")

10 Colocación del texto "La fecha de nacimiento es:" en la celda seleccionada.11 =SELECCIONAR("lc(1)")12 Selección de una celda una columna a la derecha de la celda activa.13 =INTRODUCIR("Introduzca la fecha de nacimiento";1;"Cálculo de edades";;100;100;)14 Petición de la fecha de nacimiento. La celda superior está

nombrada como F_Nacimiento.15 =SI(F_Nacimiento=FALSO;VOLVER())16 Condicional que regula el funcionamiento del botón CANCELAR.17 =FORMULA(F_Nacimiento)18 Colocación del valor de F_Nacimiento en la celda activa.19 =FORMATO.NUMERO("d-mmm-aa")20 Asignación de formato de fecha a la celda activa.21 Edad=ENTERO((AHORA()-F_Nacimiento)/365)22 Cálculo de la edad y asignación de este valor a la variable Edad.23 =SELECCIONAR("l(1)c(-1)")24 Selección de una celda una fila mas abajo y una columna a la izquierda.25 =FORMULA("La edad es:")26 Colocación en la celda activa del texto "La edad es:"27 =SELECCIONAR("lc(1)")28 Selección de una celda una columna a la derecha.29 =FORMULA(Edad)30 Colocación del valor de la variable Edad.31 =SELECCIONAR(DESREF(CELDA.ACTIVA();-1;-1;2;2))32 Selecciona el rango donde se han introducido datos.33 =ANCHO.COLUMNA(;;;3)34 Realiza un ajuste automático de ancho de columna.35 =SELECCIONAR("l1c1")36 Selecciona la celda A1.37 =VOLVER()38 Fin de la ejecución de la macro.

Se han añadido las filas 5, 6, 15 y 16. Obsérvese que en la función =SI() solo se han utilizadolas dos primeras partes del argumento. Se establece lo que la función ha de hacer en el caso de que secumpla la condición. En el caso de que no se cumpla no se establece ninguna operación definida, de estaforma, la función no hace nada y se prosigue la ejecución de la macro.

En cuanto a la segunda de las posibles operaciones ejemplo, se va a intentar a continuación quela macro calcule el día de la semana correspondiente a la fecha de nacimiento. A través de la función=DIASEM(número de serie del día;sistema de numeración), Excel calcula un número correspondiente aldia de la semana. Existen tres tipos diferentes de sistems de numeración de días: El tipo 1 asigna aldomingo el valor 1, el valor 2 al lunes y así sucesivamente hasta el 7 que pertenece al sábado. Elsegundo sistema de numeración comienza asignando al lunes el número 1 y al domingo el 7. El tercertipo asigna el 0 al lunes y el 6 al domingo. Para este ejemplo se va a seguir el tipo 2.

Page 33: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 33 http://www.serem.com

1 Cálculo_de_Edades (c)2 Nombre y letra de Ejecución de la macro.3 Celda_Inicial=INTRODUCIR("Introduzca la celda comienzo";8;"Cálculo de edades";;100;100;)4 Petición de la celda donde se comienza a colocar los datos. Asignación a la variable

Celda_Inicial5 =SI(Celda_Inicial<>0;VOLVER())6 Comprueba si ha habido cambios en el valor de Celda_Inicial.7 =SELECCIONAR(Celda_Inicial)8 Selección de la celda introducida a través de la función =Introducir.9 =FORMULA("La fecha de nacimiento es:")

10 Colocación del texto "La fecha de nacimiento es:" en la celda seleccionada.11 =SELECCIONAR("lc(1)")12 Selección de una celda una columna a la derecha de la celda activa.13 =INTRODUCIR("Introduzca la fecha de nacimiento";1;"Cálculo de edades";;100;100;)14 Petición de la fecha de nacimiento. La celda superior está nombrada como F_Nacimiento.15 =SI(F_Nacimiento=FALSO;VOLVER())16 Condicional que regula el funcionamiento del botón CANCELAR.17 =FORMULA(F_Nacimiento)18 Colocación del valor de F_Nacimiento en la celda activa.19 =FORMATO.NUMERO("d-mmm-aa")20 Asignación de formato de fecha a la celda activa.21 Edad=ENTERO((AHORA()-F_Nacimiento)/365)22 Cálculo de la edad y asignación de este valor a la variable Edad.23 =SELECCIONAR("l(1)c(-1)")24 Selección de una celda una fila mas abajo y una columna a la izquierda.25 =FORMULA("El día del nacimiento fue:")26 Coloca en la celda el texto "El día de nacimiento fue:"27 =SELECCIONAR("l(0)c(1)")28 Avanza una columna a la derecha.29 =SI(DIASEM(F_Nacimiento;2)=1;FORMULA("LUNES"))30 =SI(DIASEM(F_Nacimiento;2)=2;FORMULA("MARTES"))31 =SI(DIASEM(F_Nacimiento;2)=3;FORMULA("MIÉRCOLES"))32 =SI(DIASEM(F_Nacimiento;2)=4;FORMULA("JUEVES"))33 =SI(DIASEM(F_Nacimiento;2)=5;FORMULA("VIERNES"))34 =SI(DIASEM(F_Nacimiento;2)=6;FORMULA("SÁBADO"))35 =SI(DIASEM(F_Nacimiento;2)=7;FORMULA("DOMINGO"))36 Controla el número de día de la semana y coloca el nombre correspondiente.37 =SELECCIONAR("L(1)C(-1)")38 Avanza una fila y retrocede una columna39 =FORMULA("La edad es:")40 Colocación en la celda activa del texto "La edad es:"41 =SELECCIONAR("lc(1)")42 Selección de una celda una columna a la derecha.43 =FORMULA(Edad)44 Colocación del valor de la variable Edad.45 =SELECCIONAR(DESREF(CELDA.ACTIVA();-2;-1;3;2))46 Selecciona el rango donde se han introducido datos.47 =ANCHO.COLUMNA(;;;3)48 Realiza un ajuste automático de ancho de columna.49 =SELECCIONAR("l1c1")50 Selecciona la celda A1.51 =VOLVER()52 Fin de la ejecución de la macro.

Page 34: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 34 http://www.serem.com

Las filas 25 y 26 son nuevas. La fila 25 contiene instrucciones acerca de la inserción de unnuevo texto.

Se han añadido las filas desde el número 29 al 36. En ellas se contemplan los posibles distintosvalores de la función =DIASEM().

Se ha modificado el contenido de la fila 45 ya que el rango que se ha de seleccionar ahora tienedos columnas y tres filas.

=SI() / FIN.SI()Estas dos funciones se utilizan cuando, si se cumple una condición, han de ejecutarse varias

instrucciones seguidas. La función =SI() solo permite expresar una instrucción si se cumple la condiciónespecificada. En este caso, las instrucciones que se deben ejecutar si se cumple la condición expresada,se colocan en filas sucesivas detrás de la fila que contiene la función =SI(). La función =FIN.SI() indicaa Excel dónde termina este conjunto de instrucciones.

ESTRUCTURAS REPETITIVAS.

Durante la ejecución de un programa, es posible que sea necesaria la repetición de una serie deinstrucciones de dicho programa mientras se cumpla determinada condición. Un ejemplo de estaafirmación puede mejorar el funcionamiento de la macro del tema anterior.

Supóngase que se necesitan introducir muchas fechas. Con la macro tal y como está diseñada,para introducir cada una de estas fechas habría que ejecutar la macro, es decir, habría que ir al sistemade menús o a la barra de herramientas y pulsar el botón correspondiente.

Una posible solución sería que al final de la ejecución normal de la macro, ésta se detuviera ypreguntara al usuario si desea introducir otra fecha. En caso de que el usuario responda “Sí”, la macrorepetirá todas sus instrucciones. En caso de que el usuario responda “No”, la macro terminará suejecución y devolverá el control a Excel v. 5.0.

=MIENTRAS() / =SALIR.BUCLE()La función típica de creación de estructuras repetitivas es =MIENTRAS(condición). Esta

función debe ir acompañada de =SALIR.BUCLE().

=MIENTRAS(condición) comienza la ejecución del bucle. Todas las instrucciones desde éstase repetirán mientras se cumpla condición.

=SALIR.BUCLE() indica a Excel dónde terminan las instrucciones que deben ser repetidasdurante la ejecución de la macro.

La siguiente macro está diseñada para pedir al usuario que introduzca un nombre y un primerapellido. Su funcionamiento es el siguiente: Al activarse, pide al usuario que introduzca un nombre. Unavez introducido este nombre, al ACEPTAR, la celda activa se desplaza una celda a la derecha y la macropide el primer apellido.

El funcionamiento de la tecla CANCELAR de cada uno de de los cuadros de diálogo generadospor la función =Introducir(), está controlado por la función =Si(), que aparece exactamente detrás dedicha función.

Page 35: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 35 http://www.serem.com

La celda que incluye la función =Introducir que pide el Nombre, está nombrada como“Nombre”. La celda que incluye la función =Introducir que pide el Primer Apellido, está nombradacomo “Primer_Apellido”. La macro no pide la celda de comienzo: El usuario se sitúa en cualquier celday los datos introducidos se irán situando en la hoja a partir de esta celda. El código de esta macro es elsiguiente:

1 Introducción_de_datos (i)2 Nombre de la macro y tecla de activación.3 =INTRODUCIR("Introduzca el Nombre";2;"Introducción de Datos";;100;100;)4 Petición del Nombre.5 =SI(Nombre=FALSO;VOLVER())6 Regulación de la tecla CANCELAR.7 =FORMULA(Nombre)8 Colocación del Nombre en la celda activa.9 =SELECCIONAR("lc(1)")10 Avance de una columna de la celda activa.11 =INTRODUCIR("Introduzca el Primer Apellido";2;"Introducción de Datos";;100;100;)12 Petición del primer apellido.13 =SI(Primer_Apellido=FALSO;VOLVER())14 Regulación de la tecla CANCELAR.15 =FORMULA(Primer_Apellido)16 Inserta el Primer Apellido en la celda activa.17 =VOLVER()

Con este código, la macro pide una vez el nombre y una vez el primer apellido. Si el usuarionecesitase incluir muchos nombres en la hoja de cálculo desde la que se ejecuta esta macro, necesitaríaque esta petición de nombre y apellido se repitiera indefinidamente. Para realizar esta operación, nadamejor que un bucle. La idea es que cada vez que el usuario introduzca el primer apellido, la macro hagaque la celda activa retroceda una columna, avance una fila y vuelva a pedir el nombre, avance unacolumna, pida el apellido y así sucesivamente. Cuando el usuario no desee añadir mas nombres yapellidos, será suficiente que pulse la tecla CANCELAR. El código será el siguiente:

1 Introducción_de_datos (i)2 Nombre de la macro y tecla de activación.3 Valor=04 Asignación invariable.5 =MIENTRAS(Valor=0)6 Comienzo de un bucle infinito.7 = INTRODUCIR("Introduzca el Nombre";2;"Introducción de Datos";;100;100;)8 Petición del Nombre.9 = SI(Nombre=FALSO;VOLVER())10 Regulación de la tecla CANCELAR.11 = FORMULA(Nombre)12 Colocación del Nombre en la celda activa.13 = SELECCIONAR("lc(1)")14 Avance de una columna de la celda activa.15 = INTRODUCIR("Introduzca el Primer Apellido";2;"Introducción de Datos";;100;100;)16 Petición del primer apellido.17 = SI(Primer_Apellido=FALSO;VOLVER())18 Regulación de la tecla CANCELAR.19 = FORMULA(Primer_Apellido)20 Colocación del Primer Apellido en la celda activa.21 = SELECCIONAR("l(1)c(-1)")22 La celda activa avanza una fila y retrocede una columna.23 =SALIR.BUCLE()24 Fin de las instrucciones que se repiten.25 =VOLVER()26 Fin de la Ejecución de la macro.

Page 36: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 36 http://www.serem.com

En la fila 3 se inicializa la variable Valor. Esta variable sirve para ser utilizada como condiciónel el bucle. Tal y como se ha expresado anteriormente, un bucle es un conjunto de instrucciones que serepiten mientras se cumpla una condición. En este caso la condición es que Valor sea igual a 0. Comoesta condición nunca cambia, el bucle se repite indefinidamente hasta que el usuario pulsa CANCELAR.De este modo, se pueden añadir un número indeterminado de nombres.

Desde la fila 5 (=Mientras()) a la fila 23 (=Salir.Bucle()) está el núcleo del bucle. Estas dosinstrucciones marcan el comienzo y el final de las filas que contienen instrucciones que se repiten.

Si se observa, todas las filas que constituyen el bucle, están sangradas. En programación, estasangría se utiliza con frecuencia en la escritura de los códigos para identificar de una forma mas cómodael principio y el final de cada bucle. Hay que tener en cuenta que el primer carácter de cada fila quecontiene una función, ha de ser un símbolo “=“. En caso contrario, Excel identificaría esa fila como decomentario y no ejecutaría la función contenida.

Si se desea, al final del código se pueden añadir unas instrucciones que hagan un ajusteautomático de anchura de columna, o den un cierto formato a las celdas.

=INTERRUMPIR()Si se observa, en las filas 9 y 17, si el usuario pulsa CANCELAR, se ejecuta la instrucción

=VOLVER() y se termina la ejecución de la macro. Si detrás de la instrucción =SALIR.BUCLE(), sehubiese añadido alguna instrucción, ésta no se ejecutaría al salir de la macro.

Si, cuando se pulsa CANCELAR, no se desea salir de la macro, sino solamente salir del bucle ypor consiguiente, ejecutar las instrucciones existentes entre la función =SALIR.BUCLE() y el final dedicha macro, la mejor opción es utilizar la función =INTERRUMPIR() en los condicionales, en lugarde utilizar la función =VOLVER().

La función =INTERRUMPIR() “saca” la ejecución de la macro del bucle y asigna el control ala primer instrucción que encuentra detrás de la función =SALIR.BUCLE().

En el siguiente listado, aparece el mismo código anterior modificado para que después deintroducir la serie de nombres, se seleccione todo el rango donde se han introducido valores y se haga unajuste automático de anchura de columna.

Para poder seleccionar este rango, es necesario llevar la cuenta del número de filas que se hanrecorrido. Para llevar esta cuenta, se establecerá una variable llamada “Cuenta_Filas”. Esta variable seincrementará en una unidad cada vez que la celda activa avance una fila. Al final, este número de filasse utilizará para seleccionar el rango donde se han introducido datos.

Para establecer esta selección, se utilizará la función =DESREF(). A diferencia de la función=SELECCIONAR(), la función =DESREF() admite en su argumento valores variables. Se insiste en elhecho de que, utilizando este conjunto de funciones, el número de datos que el usuario puede introduciral ejecutar la macro es absolutamente indeterminado. La inclusión de cualquier valor absoluto limitaríalas posibilidades de utilización. Se trata de que una macro sea lo mas “abierta” posible, es decir, permitala mayor libertad de movimientos posible al usuario.

Como en todos los casos anteriores, las filas sombreadas corresponden a comentarios queexplican el funcionamiento de la expresión contenida en la fila superior.

Page 37: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 37 http://www.serem.com

1 Introducción_de_datos (i)2 Nombre de la macro y tecla de activación.3 Valor=04 Asignación invariable.5 Cuenta_Filas=06 Inicializa el contador de filas.7 =MIENTRAS(Valor=0)8 Comienzo de un bucle infinito.9 = INTRODUCIR("Introduzca el Nombre";2;"Introducción de Datos";;100;100;)10 Petición del Nombre.11 = SI(Nombre=FALSO)12 Regulación de la tecla CANCELAR.13 = SELECCIONAR("lc(1)")14 Avance de una columna de la ceda activa.15 = INTERRUMPIR()16 Sale del bucle17 = FIN.SI()18 Termina el condicional.19 = FORMULA(Nombre)20 Colocación del Nombre en la celda activa.21 = SELECCIONAR("lc(1)")22 Avance de una columna de la celda activa.23 = INTRODUCIR("Introduzca el Primer Apellido";2;"Introducción de Datos";;100;100;)24 Petición del primer apellido.25 = SI(Primer_Apellido=FALSO;INTERRUMPIR())26 Regulación de la tecla CANCELAR.27 = FORMULA(Primer_Apellido)28 Colocación del Primer Apellido en la celda activa.29 = SELECCIONAR("l(1)c(-1)")30 La celda activa avanza una fila y retrocede una columna.31 Cuenta_Filas=Cuenta_Filas+132 Añade una unidad al contador de filas.33 =SALIR.BUCLE()34 Fin de las instrucciones que se repiten.35 =SELECCIONAR(DESREF(CELDA.ACTIVA();;;-Cuenta_Filas-1;-2))36 Selecciona todo el rango donde se han introducido datos.37 =ANCHO.COLUMNA(;;;3)38 Hace un ajuste automático de anchura de columna.39 =VOLVER()40 Termina la ejecución de la macro.

FUNCIONES DE CONTROL

Dentro de este apartado van a ser agrupadas una serie de funciones cuya misión principal es lade verificar el funcionamiento de celdas concretas, o de gestionar el flujo del programa.

=ESBLANCO(referencia)Devuelve VERDADERO si la celda está en blanco.

=ESTEXTO(valor)Cevuelve VERDADERO si el valor es una cadena de texto.

Page 38: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 38 http://www.serem.com

=COLUMNA(referencia)Devuelve el número de columna en la que se encuentra referencia.

=FILA(referencia)Devuelve el número de fila en la que se encuentra referencia.

=VALREF(referencia)Devuelve el valor de la celda referencia.

=ECO(n)Si n=1, se activa el eco a pantalla.Si n=0, se desactiva el eco a pantalla.

=IR.A.(referencia)Lleva directamente la ejección de la macro a la celda referencia.

EJECUCIÓN AUTOMÁTICA DE MACROS

En Excel v. 5.0 existe la posibilidad de crear macros que se ejecuten automáticamente cuandose abre el libro de trabajo que almacena dichas macros. Para que este proceso tenga lugar, es suficienteque aquella celda de la hoja de macros donde comienza el código de la macro que se desea ejecutar,tenga asignado un nombre que comience por Auto_Abrir.

En el ejemplo siguiente, la celda de la fila 1 está nombrada como Auto_abrir. Cuando se activael libro de trabajo, se ejecuta la macro pidiendo la celda donde se desea comenzar la introducción denombres.

Por otra parte, es posible que una hoja de cálculo se ejecute automáticamente al entrar en Excelv. 5.0.

Cuando se instala Excel v. 5.0, se crea automáticamente un directorio llamado INICIAR. Todoslos archivos que se almacenen en este directorio se abrirán automáticamente cuando se arranque Excel.

De esta forma, un libro de trabajo almacenado en el directorio INICIAR, y que contenga unamacro que comienza por una celda nombrada Auto_abrir, funcionará automáticamente solo conejecutar Excel v. 5.0.

En la página siguiente aparece el código completo de una macro que se activa automáticamentenada mas arrancar Excel v. 5.0, ya que el libro de trabajo que la contiene está almacenado en eldirectorio INICIAR.

Page 39: Manual de Excel Macros v5

Cliente: LUCENT TECHNOLOGIES

Manual de Microsoft Excel Macros Pág. 39 http://www.serem.com

1 Introducción_de_datos (i)2 Nombre de la macro y tecla de activación. La celda tiene el nombre Auto_abrir.3 Celda_Inicio=INTRODUCIR("Introduzca la celda inicial";8;"Introducción continua de datos";;100;100;)4 Petición de la celda de comienzo.5 =SI(Celda_Inicio<>0;VOLVER())6 Control del botón CANCELAR.7 =SELECCIONAR(Celda_Inicio)8 Selecciona la celda inicial.9 Valor=010 Asignación invariable.11 Cuenta_Filas=012 Inicializa el contador de filas.13 =MIENTRAS(Valor=0)14 Comienzo de un bucle infinito.15 = INTRODUCIR("Introduzca el Nombre";2;"Introducción de Datos";;100;100;)16 Petición del Nombre.17 = SI(Nombre=FALSO)18 Regulación de la tecla CANCELAR.19 = SELECCIONAR("lc(1)")20 Avance de una columna de la ceda activa.21 = INTERRUMPIR()22 Sale del bucle23 = FIN.SI()24 Termina el condicional.25 = FORMULA(Nombre)26 Colocación del Nombre en la celda activa.27 = SELECCIONAR("lc(1)")28 Avance de una columna de la celda activa.29 = INTRODUCIR("Introduzca el Primer Apellido";2;"Introducción de Datos";;100;100;)30 Petición del primer apellido.31 = SI(Primer_Apellido=FALSO;INTERRUMPIR())32 Regulación de la tecla CANCELAR.33 = FORMULA(Primer_Apellido)34 Colocación del Primer Apellido en la celda activa.35 = SELECCIONAR("l(1)c(-1)")36 La celda activa avanza una fila y retrocede una columna.37 Cuenta_Filas=Cuenta_Filas+138 Añade una unidad al contador de filas.39 =SALIR.BUCLE()40 Fin de las instrucciones que se repiten.41 =ECO(0)42 Desactiva el eco a pantalla.43 =SELECCIONAR(DESREF(CELDA.ACTIVA();;;-Cuenta_Filas-1;-2))44 Selecciona todo el rango donde se han introducido datos.45 =ANCHO.COLUMNA(;;;3)46 Hace un ajuste automático de anchura de columna.47 =SELECCIONAR(Celda_Inicio)48 Deja la primeracelda como celda activa.49 =ECO(1)50 Activa el eco a pantalla.51 =VOLVER()52 Termina la ejecución de la macro.