QU ES VISUAL BASIC PARA APLICACIONES Visual Basic
QUÉ ES VISUAL BASIC PARA APLICACIONES • Visual Basic para Aplicaciones (VBA) es el lenguaje de programación que Microsoft incorpora en sus productos de Office, e incluso algunas otras marcas que no son de Microsoft han incorporado este lenguaje en sus aplicaciones. Una gran ventaja de conocer y manejar VBA es que nos permite manipular otros programas con el mismo lenguaje gracias a su modelo de manejo de objetos.
DEFINICIONES • Es necesario conocer algunas definiciones de los objetos que vamos a estar trabajando para poder establecer las bases del lenguaje técnico que estaremos usando. • Módulo: los módulos de Visual Basic para Aplicaciones son el lugar donde se escriben los códigos para el desarrollo de las macros, se guardan dentro del libro de Microsoft Excel 2016, y éstos se editan o crean dentro del Editor de Visual Basic. • Códigos: son secuencias de instrucciones que se desarrollan dentro de los módulos de Visual • Procedimiento: es una rutina que se elabora a base de código en un módulo que realiza ciertas acciones. Hay dos tipos de procedimientos: Sub procedimientos y Function procedimientos.
COSAS PARA TOMAR EN CUENTA DE LOS OBJETOS • Como cada elemento de Excel es un objeto, y Visual Basic para Aplicaciones es una aplicación orientada a objetos, es bueno considerar los siguientes puntos: • Los objetos tienen propiedades y métodos únicos, sin embargo hay algunos que comparten algunas propiedades y métodos. • Las propiedades son datos del objeto que podemos tomar para hacer algunas decisiones y los métodos son acciones que se ejecutan en un objeto.
EDITOR DE VISUAL BASIC • El Editor de Visual Basic es donde se desarrollan las macros, y es una aplicación que está pegada con Microsoft Excel 2016, es decir no se puede ejecutar el Editor de Visual Basic si no se está ejecutando Excel. Cuando necesitamos el Editor, oprimimos las teclas [Alt] + [F 11].
FICHA DESARROLLADOR • Otra forma de acceder al Editor de Visual Basic es desde la ficha de Desarrollador> Código> Visual Basic. Si la ficha de Desarrollador no está activada, se puede activar en la ficha Archivo> Opciones> Personalizar> Cinta de opciones, y en el cuadro derecho donde dice Fichas principales, activar Desarrollador.
GRABAR UNA MACRO • Grabar una macro puede ser el primer paso para comprender cómo funcionan las macros, ya que cuando se ejecuta este comando, Microsoft Excel 2016 genera el código por nosotros, y esto es invaluable ya que podemos revisar cada parte de nuestro código para entender cómo se empieza a programar. Cada vez que vaya teniendo experiencia en la programación, irá dejando la práctica de grabar macros. Cuando vaya a grabar una macro tenga en cuenta esto:
EJECUTAR UNA MACRO • Hay varias maneras de ejecutar una macro: • Ficha Desarrollador> Código> Macros • Si asignó una tecla de acceso rápido a la macro tecla [Ctrl] + la tecla correspondiente. • Con un clic a un botón, una forma o una imagen que se le haya asignado la macro. • Desde un icono en la Cinta.
EL LENGUAJE DE PROGRAMACIÓN • El lenguaje de programación es Visual Basic para Aplicaciones y es necesario conocer ciertos elementos para el mejor y completo entendimiento de éste. El lenguaje de programación está desarrollado con base en instrucciones que necesitamos saber utilizar, así como conocer su sintaxis.
ALGUNOS ELEMENTOS DEL LENGUAJE • Los procedimientos Sub y Function pueden tener o no los elementos listados a continuación. Estos elementos son algunos de los que puede tener la estructura de una macro, pero son los más comunes que nos podemos encontrar en las macros.
PROCEDIMIENTOS SUB • Los procedimientos Sub son una serie de instrucciones. Con estos procedimientos Sub iniciamos una macro y la terminamos con End Sub. Éstos se desarrollan en los módulos dentro del Editor de Visual Basic. Los módulos pueden contener cualquier número de procedimientos. La sintaxis de los procedimientos Sub es: • [Private / Public] [Static] Sub nombre [(listaargumentos)] • [Instrucciones] [Exit sub] [Instrucciones] • End Sub
COMENTARIOS • Los comentarios son una poderosa herramienta para documentar nuestras macros. Estos comentarios se definen con un apóstrofe (') al inicio del renglón donde se va a agregar el comentario. Los comentarios también se pueden usar al final de una instrucción. Cada vez que Visual Basic para Aplicaciones encuentra un apóstrofe, ignora lo que hay después de éste. Por ejemplo, la primera línea de la macro es un comentario:
VARIABLES • Así como Excel utiliza miles de variables (celdas) para manejar la información, Visual Basic para Aplicaciones también puede tener sus propias variables para el manejo de los datos. Una variable es un pedazo de memoria reservada para que nosotros pongamos cierta información ahí; son como cajones en un enorme archivero, muy similar a la hoja de cálculo. La diferencia radica en que cada vez que se necesite una variable en Visual Basic para Aplicaciones, hay que darle un nombre y un tipo.
NOMBRES DE VARIABLES • Cuando comenzamos con la programación, es muy probable que empecemos a definir variables sin ningún tipo de orden. Al principio esto puede que nos funcione, pero a la larga nos va a causar dolores de cabeza; es mejor tener en claro cómo definir nuestros nombres de variables desde el inicio para que se haga un buen hábito.
TIPOS DE VARIABLES • La definición de variables es muy útil por algunas razones, entre ellas: prevenimos errores de asignación de datos, es decir, esto nos sirve como validación para que nuestra información sea confiable, ya que, si definimos una variable tipa numérica, no va aceptar que le demos información tipo texto. • Ver tabla de tipos de variable en el libro
DECLARAR VARIABLES EN UNA MACRO • La declaración de variables tiene que ser parte del hábito de un buen programador, ya que forzarnos a hacer la declaración de las variables nos permite tener mayor control sobre programas complejos y largos que desarrollemos.
CAMBIAR EL FLUJO DE UNA MACRO • El flujo del programa siempre se hace de arriba abajo, pero es un flujo de programa lineal, y no es muy efectivo; los programas que no permiten brincar líneas de código o tomar decisiones a partir de ciertas condiciones, no son programas útiles, porque, aunque un programa siempre hace lo mismo, debemos poder tomar cierto tipo de decisiones sobre la ejecución de la macro.
LA INSTRUCCIÓN IF - THEN • Esta instrucción únicamente realiza una sola de las opciones, cuya sintaxis se escribe a continuación: • If condición Then • Instrucciones a realizar si la condición es verdadera • [Else. If] • [Instrucciones a realizar si la condición es verdadera en • este nuevo If] • [Else] • [Instrucciones a realizar si la condición es falsa] • End If
LA INSTRUCCIÓN SELECT CASE – END SELECT • Esta instrucción es más sencilla de utilizar cuando se trata de tomar varias decisiones (alternativa para el If. Then). Su sintaxis es: • Select Case variable • Case comparación 1 • Código a realizar si se cumple la comparación 1 • [Case comparación 2] • [Código a ejecutar si se cumple la comparación 2] • [Case Else] • [Código a realizar si ninguna comparación se cumple] • End Select
CICLOS Los ciclos repiten una parte de nuestra macro tantas veces como le indiquemos. Visual Basic para Aplicaciones tiene diferentes instrucciones para crear ciclos y cada una de ellas tiene sus propias características.
CICLO FOR – NEXT • Este ciclo es sumamente sencillo ya que tiene un contador interno; la sintaxis es: • For nombrecon = numinicial To numfinal [Step incremento] • [Instrucciones] [Exit For] [Instrucciones] • Next nombrecon
CICLO FOR EACH – NEXT CON COLECCIONES • Trabaja con todos los objetos de una colección, esta forma de trabajar es muy eficiente porque evitamos tener que usar contadores o propiedades de los objetos. La sintaxis es: • For Each elemento In Colleccion • [instrucciones] [Esit For] [instrucciones] • Next Element
CICLO DO WHILE • Este ciclo dura mientras una condición sea verdadera, y termina cuando ésta cambie a falsa. Este ciclo no tiene ningún contador interno. Sintaxis: • Do [While condicion] • [Instrucciones] [Exit Do] [Instrucciones] Loop
INTERACCIÓN CON EL USUARIO • Una de las cosas que considero más importantes en el desarrollo de aplicaciones en Visual Basic para Aplicaciones, es la interacción con el usuario para solicitarle cierta información mientras nuestra aplicación se está ejecutando. La interacción con el usuario es una de las prácticas más comunes que los programas hacen cuando nos muestra un cuadro de diálogo para decidir, por ejemplo, el número de copias de impresión o el tamaño de la hoja a imprimir, opciones que están dentro del cuadro de diálogo Imprimir.
MÉTODO INPUTBOX • • Esta instrucción le pregunta al usuario por un único dato. La sintaxis de Input. Box es: Input. Box(“Texto” [, Titulo] [, Default] [, Izquierda] [, Arriba] [, Archivo. Ayuda, Indice. Archivo. Ayuda] [, Tipo]) Texto: es el mensaje que se muestra en el cuadro de diálogo. Título: es un texto que aparece como nombre del cuadro de diálogo. Default: es un dato definido que se muestra en el cuadro de diálogo; si el usuario no escribe nada y sólo oprime Enter, este valor es el que se devuelve. • Arriba e Izquierda: valores de las coordenadas de la parte superior izquierda de la ventana; si se omiten. el cuadro de diálogo aparecerá centrado en la pantalla. • Archivo. Ayuda y Indice. Archivo. Ayuda: este parámetro es para solicitar ayuda del cuadro de diálogo, claro, si está desarrollada la ayuda y en un archivo. • Tipo: un valor que representa a un código para ver el tipo de dato que se pide ingresar en el cuadro de diálogo. Si se omite el cuadro de diálogo devolverá un dato tipo String (texto), aunque se haya escrito un número. En la tabla 3. 1 encontrará una lista de códigos válidos.
FUNCIÓN MSGBOX • Esta función se emplea mucho para dar mensajes al usuario, como se ha visto anteriormente. Asimismo esta función se puede usar para enviar el resultado a una variable y trabajar con él. La sintaxis es: • Msg. Box (texto [, botones] [, titulo] [, archayuda , contexto]) • Texto: mensaje que aparece en el cuadro de diálogo.
CUADROS PERSONALIZADOS • Los cuadros personalizados son mucho más amigables y se crean con relativa facilidad dándole una nueva vista a nuestras macros, además que nos incluyen nuevas habilidades para solicitar información. Estos cuadros se crean en las formas del usuario (User. Forms). • Cuando se requiera una forma de usuario, desde el Editor de Visual Basic para Aplicaciones activamos el menú de Insertar> User. Form. Cada forma de usuario contiene un cuadro de diálogo personalizado, y un libro puede contener cualquier número de formas de usuario.
CONTROLES DE CUADROS PERSONALIZADOS • Una vez que tenemos el área de trabajo o contenedor para crear nuestro cuadro de diálogo, vamos a comenzar a agregar controles. Visual Basic para Aplicaciones cuenta con diversos controles para el manejo de los cuadros personalizados, los cuales se pueden observar en la figura 3 -3, y si en su Editor de Visual Basic para Aplicaciones no aparecen, puede activarlos en el menú Ver> Cuadro de herramientas. • Seleccionar: esta herramienta permite seleccionar uno o varios objetos para trabajarlos y cambiarles sus propiedades.
Mostrar una forma personalizada • User. Form#. Show • Donde # es el número de la forma que se quiere mostrar.
Cerrar una forma • Unload User. Form# • Donde User. Form# es el nombre de la forma que se quiere cerrar y descargar de memoria.
Ocultar una forma • User. Form#. Hide • Donde # es el número de la forma que se quiere ocultar.
PROPIEDADES DE LOS CONTROLES • La ventana de Propiedades que se encuentra debajo de la ventana de Proyectos, nos muestra todas las propiedades del objeto seleccionado en forma de lista. Esto es una manera muy sencilla de cambiar sus propiedades. La ventana de Propiedades tiene dos fichas, Alfabética y Por categorías. La primera ficha muestra todas las propiedades del objeto seleccionado en orden alfabético, mientras que la segunda agrupa las propiedades por categorías. Las dos fichas muestran las mismas propiedades ordenadas de diferente manera. Véase la figura 3 -4. • Las propiedades se pueden cambiar desde el diseño de la forma cuando se desarrolla la forma dentro de la ventana de Propiedades, o también cuando se está ejecutando una macro a través de instrucciones de Visual Basic para Aplicaciones, nos permiten cambiar las propiedades de los controles de la forma.
TRABAJAR CON RANGOS • Los rangos son propiedades del objeto Worksheet, así que tenemos que hacer referencia a la propiedad y al método. Si se quiere asignar un valor a un rango, utilizamos el método Value: • Work. Sheet(“Hoja 1”). Range(“A 1”). Value = 43. 5 • Si el rango está en la hoja seleccionada, podemos utilizar sólo la propiedad: • Range(“A 1: J 20”). Value = 43. 5
TRABAJO CON ERRORES • Existen dos tipos de errores: los errores de sintaxis y los errores de lógica. • Errores de sintaxis: éstos suceden cuando se está escribiendo el programa y Visual Basic para Aplicaciones detecta que la sintaxis de alguna instrucción no es correcta y nos avisa de ello. Estos errores deben de estar completamente arreglados para que la aplicación se pueda ejecutar. • Errores de lógica: cuando estos errores ocurren la macro es detenida por Visual Basic, que muestra un cuadro de diálogo con el número y la descripción del error. Estos mensajes son muy técnicos y no es bueno que el usuario se enfrente con este tipo de cuadros de diálogo, de manera que es nuestro deber como Desarrolladores interceptarlos y cambiarlos por algo más manejable para el usuario.
Interceptar un error, usaremos la instrucción: • On Error • Una vez establecida la instrucción tenemos dos opciones: • Ignorar el error y continuar: usando el código: • On Error Resume Next • Brincar a otra parte de nuestro código, siguiendo el código: On Error Go. To Tomar. Acciones
EJECUTAR UNA MACRO PASO A PASO • Una de las mejores formas de depurar una macro es ejecutarla paso para ver qué está pasando con nuestro flujo, revisar los valores de las variables y poder tomar acciones para corregir los errores de lógica detectados sobre la marcha. • Una vez que por cualquier medio se haya ejecutado la macro paso a paso, se tiene que oprimir la tecla [F 8] cada vez que se quiera ejecutar una línea de código.
VISUALIZAR VARIABLES Tenemos que ubicar el cursor antes, después, en cualquier parte de la variable o seleccionar la variable que se quiera inspeccionar, en el menú Depuración> Agregar inspección, o con el botón derecho del mouse sobre la variable y en el menú contextual Agregar inspección.
EVENTOS • Los eventos son una forma poderosa de ejecutar automáticamente procedimientos a través de acciones cotidianas como cambiar a una hoja en particular o abrir un archivo. Hemos visto algunos eventos en este libro, como por ejemplo en las formas personalizadas que desarrollamos.
EVENTOS DE LIBRO • Estos eventos se activan en un libro en particular y se tienen que desarrollar a nivel aplicación y ubicar dentro del módulo de código del objeto This. Workbook, ya que es el único lugar donde trabajarán. • Existen 40 eventos de libro que puede consultar en la ayuda de Excel, aquí vamos a ver algunos de estos eventos.
Evento abrir (Workbook_Open) • Éste es uno de los eventos más comunes que se usan a la hora de programar, ya que se ejecutan cuando un libro es abierto y ejecuta el evento llamado Workbook_Open. El archivo Eventos libro. xlsm, tiene el ejemplo de este evento.
Evento antes de cerrar (Workbook_Before. Close) • Este evento se ejecuta antes de que el libro sea cerrado y muchas veces trabaja en conjunto con el evento anterior (Workbook_Open) ya que puede ser que cuando el libro se abrió, se hayan declarado ciertos menús contextuales que sólo queremos que estén disponibles en nuestro libro, este evento puede eliminarlos antes de cerrar el libro.
Evento antes de guardar (Workbook_Before. Save) • La siguiente rutina nos manda un recordatorio de que se tiene que respaldar el archivo dentro del servidor cuando grabamos el archivo.
EVENTOS DE HOJA • Este tipo de eventos son los más usados dentro de toda la variedad de eventos que hay, ya que la mayoría de las cosas pasan dentro de una hoja de cálculo. Con estos eventos se pueden hacer cosas que de otra manera sería imposible hacer. El código para estos eventos se debe hacer dentro del módulo de la hoja, dándole doble clic (dentro de la ventana de proyectos de Visual Basic para Aplicaciones) al nombre de la hoja que se va a trabajar.
Evento activar hoja (Worksheet_Activate) • Este evento es ejecutado cuando la hoja (donde se desarrolló el código) es seleccionada, el siguiente ejemplo nos muestra un mensaje cuando la Hoja 1 es seleccionada y puede ver este ejemplo en el archivo Eventos Hoja. xlsm, en el módulo de código de la Hoja 1.
Evento cambiar hoja(Worksheet_Change) • Este evento monitorea toda la hoja de cálculo para determinar si existe algún cambio dentro de ella. Estos cambios no aplican cuando se recalculan fórmulas, se agregan o eliminan objetos a la hoja. El siguiente ejemplo nos muestra un mensaje cuando existe un cambio en la Hoja 2 y puede ver este ejemplo en el archivo Eventos Hoja. xlsm, en el módulo de código de la Hoja 2.
Evento cambiar seleccion(Worksheet_Selection. C hange) • Este evento es ejecutado cuando el usuario define un rango para trabajar con él, el parámetro Range es el rango definido, un ejemplo de cómo trabajar este evento es el siguiente:
EVENTOS DE GRÁFICAS • Los eventos de las gráficas aplican a las gráficas que se encuentran en una hoja independiente y no están incrustadas dentro de una hoja de cálculo, ya que las hojas de los gráficos crean su módulo de código y las gráficas incrustadas no.
Evento activar gráfica (Chart_Activate) Este evento ocurre cuando seleccionamos una hoja de gráfica, veamos el siguiente código que puede encontrar en el archivo Eventos Graficas. xlsm, que contiene una hoja con datos (Hoja 1) y la hoja que contiene la gráfica (Gráfica 1).
OTROS EVENTOS • Estos eventos no tienen relación con ningún objeto, y a diferencia de los demás eventos, éstos se programan en un módulo de código general. Estos eventos se acceden usando métodos de aplicación del objeto. Y tenemos dos eventos: On. Key y On. Time.
Evento On. Key • Este tipo de eventos nos permiten definir y redefinir las teclas o combinaciones de teclas para que Excel ejecute alguna acción. Si se define alguna tecla que ya esté definida por Excel, ésta dejará de funcionar como normalmente lo hace para ejecutar las acciones definidas por este evento. • Es importante resaltar que este evento que usa el método On. Key para asignar eventos a las teclas, va más allá del libro que donde se ejecutó, es decir, funcionará para todos libros abiertos.
Evento On. Time • Este evento se ejecuta en alguna hora en específico o en algún día en particular. La sintaxis del evento On. Time de la aplicación es: • Application. On. Time tiempo, “Macro”[, Tiempo. Final][, Estado] • Tiempo: la hora donde se quiere ejecutar el proceso. • Macro: el procedimiento que se va a ejecutar. • Tiempo. Final: hora donde ya no se ejecutará el procedimiento. Excel debe de estar disponible para ejecutar este parámetro, si no lo ignorará.
OBJETO RANGE • Hasta ahora hemos usado el objeto Range para trabajar con valores de las celdas de la hoja de cálculo, pero veremos que dentro de sus muchos métodos (casi 80) encontramos: selección de rangos de forma dinámica, realizar ordenaciones de información, usar el pegado especial y filtros avanzados entre otras muchas.
FILTRO AVANZADO OBJETO RANGE • • La sintaxis del filtro avanzado usando el objeto RANGE es: Rango. Advanced. Filter Acción, Criterios, Copiar. A, Unico Esto aplicado quedaría: Range(“A 1: D 100). Advanced. Filter xl. Filter. Copy, range("G 1: J 2"), Range("G 10: J 10") • Donde Range(“A 1: D 100) corresponde a Rango. El parámetro xl. Filter. Copy es Acción, el parámetro de los criterios es Range(“G 1: J 2”) y el último parámetro corresponde a donde se ca a copiar la información. La sintaxis se puede desarrollar de siguiente manera: • Range(“A 1: D 100). Advanced. Filter Criteria. Range: =Range("G 1: J 2"), Action: =xl. Filter. Copy, Copy. To. Range: =Range("G 10: J 10")
FÓRMULAS OBJETO RANGE • Habra ocaciones en las cuales deba de enviar una fórmula a la hoja de cálculo como lo hemos hecho anteriormente es a través del objeto Worksheet. Function para dejar usar una función de Excel. Pero cunado queremos envíar una fórmula definida por nosotros o una función de Excel a la hoja de cálculo, usamos la porpiedad Formula, el siguiente ejemplo ingresa la función Suma en la celda A 10 de la hoja Formula: • Range("A 10"). Formula = "=Sum(A 2: A 9)"
ARREGLOS • Los arreglos o también conocidos como matrices, son variables especiales que nos permiten almacenar más de un dato y este conjunto de datos comparten un nombre en común, imagine que tiene una cuadrícula de Excel en memoria y que puede acceder a ella desde la macro sin tener que interactuar con la hoja de cálculo.
ARREGLOS DIMENSIONALES • Los arreglos dimensionales constan de solo una columna y se manejan a través de un solo índice, es decir, se tiene solo una columna para trabajar. Al igual que todas las variables, los arreglos necesitan definirse para poder trabajar con ellos y que la velocidad de la ejecución de la macro no se vea comprometida. Para definir un arreglo: • Dim Nombre. Arreglo() • El Nombre. Arreglo va a ser el nombre que se le de al arreglo y los paréntesis al final, le indican que es un arreglo el que se esta definiendo. Si por ejemplo definimos:
Option Base 1 • Esta opción se debe de poner antes de que la macro se ejecute, es decir, hasta arriba del módulo en la sección de declaraciones, antes del primer procedimiento Sub. • Otra forma de declarar los arreglos es indicando cuántos elementos va a tener y esto hará que ya no se requiera de la opción Option Base 1.
ARREGLOS MULTIDIMENSIONALES • Estos arreglos se usan cuando un arreglo bidimensional no se ajusta a los requerimientos de nuestro trabajo y hay que manejar más elementos, por ejemplo, empleados y departamentos. En estos casos tenemos que manejar columnas y renglones para poder resolver este tema. • Para declarar un arreglo con renglones y columnas, se agrega otro parámetro: • Dim Nombre. Arreglo(Inicio To Final[, Inicio To Final]) [As Tipo]
ARREGLOS DINAMICOS • En más de una ocasión va a necesitar declarar arreglos dinámicos por diferentes causas, pero este concepto es debido a que cuando declaramos el arreglo no sabemos las dimensiones que va a tener, podemos declarar un arreglo pensando en un número grande que vaya a ser suficiente para contener toda la posible información pero esto tiene sus detalles como que puede caber la posibilidad de que la información aun así no quepa o por el otro lado, que el arreglo sea demasiado grande y usemos recursos de mas.
DEFINIR ARREGLO DINÁMICO • Dim Arreglo() • Se puede definir un tipo de datos aunque no es necesario. Si no se define el tipo de datos, el arreglo queda como un arreglo tipo Variant, que significa que puede aceptar cualquier valor incluso otro arreglo.
MENUS CONTEXTUALES • Los menús contextuales son la forma rápida de acceder a nuestros comandos dando clic derecho con el mouse en alguna parte de Excel. Estos menús son muy usados, ya que nos ahorran la tarea de mover el apuntador del ratón a una etiqueta y buscar ahí el comando que estamos solicitando.
TRABAJO CON MENÚS CONTEXTUALES • Para los menús contextuales, el objeto Command. Bar es la solución. • Controles dentro del objeto Command. Bar • Los controles vienen siendo botones o menús. A estos controles se les puede llamar a través de las propiedades de Index o Caption. El siguiente ejemplo muestra un elemento (el primero) del menú contextual que aparece cuando damos clic en el botón izquierdo del ratón sobre la columna.
TIPOS DEL COMMANDBAR • Los tipos que soporta el objeto Command. Bar dentro de Microsoft Excel 2013, y que se pueden ubicar a través de su propiedad Type, son: • Barra de herramientas, que es el tipo 0 (cero). • La barra de menús, siendo éste el tipo 1. • Los menús contextuales que son el tipo 2.
AGREGAR UN MENÚ A UN MENÚ CONTEXTUAL • Para agregar un menú a un menú contextual se requiere del uso del método Add del objeto Command. Bars. Controls, que primero se asigna a una variable y después se agrega el texto y la acción que va a realizar el menú, que para este ejemplo será únicamente dar formato como porcentaje a las celdas seleccionadas.
ACTIVAR/DESACTIVAR • Los menús contextuales se pueden desactivar de un menú contextual a través de propiedad Enabled y así controlar que no se vea el menú contextual, vea el siguiente código: • Application. Command. Bars("Cell"). Enabled = False • Con el código anterior, al dar clic con el botón derecho sobre cualquier celda, no aparecerá ningún menú contextual, para activarlo de nuevo, cambie su propiedad Enabled a True.
RESTAURAR • Podemos restaurar un menú contextual a su estado original con la siguiente instrucción: • Command. Bars("Cell"). Reset • El método Reset también habilita elementos desactivados, pero si el menú está completamente desactivado, este comando no lo puede volver a activar.
LA CINTA • A través de Visual Basic para Aplicaciones no es posible manipular la cinta debido a su nueva arquitectura de diseño. • El código de Ribbon. X es un lenguaje XML (Extensible Markup Language) que trae todos los controles para que Visual Basic para Aplicaciones los interprete y sepa cómo son, qué pasa cuando se activan y en qué parte de la cinta van a estar los controles.
LO BÁSICO DE RIBBONX • El programa Custom. UI, nos permite crear código XML que es necesario para poder manejar la Cinta de acuerdo con nuestras necesidades. Este programa resulta útil ya que trae un compilador que revisa el código antes de guardarlo y ver que cuando abramos Excel no envíe errores a la hora de la ejecución.
COSAS A CONSIDERAR • Todas las instrucciones se comienzan con un menor que (<), y son cerradas con una diagonal invertida y un mayor que (/>). Sin estos símbolos, el corrector de sintaxis marca un error. • Los parámetros dentro de una instrucción son separados con un espacio en blanco, no necesitan comas ni punto y coma. Éstos pueden estar uno por línea o todos juntos. • Todos los textos se ponen siempre entre comillas para que el sistema sepa que es un texto y no un intento de instrucción mal escrito.
CREAR UNA ETIQUETA • Probablemente quiere crear una etiqueta personalizada para que sus botones se distingan fácilmente. Esta instrucción viene por pares, ya que, dentro de ésta, se puede agregar código para crear un grupo y botones. La siguiente instrucción nos proporciona esa funcionalidad: • <tab id="Nueva. Etiqueta" label="Texto" insert. After. Mso="Tab. Home"> • ‘Aquí pueden ir otras instrucciones • </tab> • tab: comando para la creación de una etiqueta dentro de la cinta. • id: nombre interno del control. • label: define el texto que va a aparecer como nombre de la etiqueta. • insert. After. Mso: podemos definir después de qué etiqueta insertar nuestra etiqueta. • </tab>: fin del comando para crear una etiqueta.
CREAR UN GRUPO • Los grupos son una excelente manera de hacer que nuestros botones se distingan fácilmente, a diferencia de la instrucción para crear un botón, la instrucción de group viene por pares, una que abre la instrucción con sus parámetros y la otra que cierra el grupo, esto es por si se quiere agregar botones al grupo, se haga dentro de éste par de instrucciones. La siguiente instrucción nos muestra cómo hacerlo: • <group id="Grupo. Herr" label="Herramientas"> • Aquí pueden ir más instrucciones • </group> • group: comando para la creación del objeto. • id: nombre interno del control. • label: texto que definirá el nombre del grupo. • </group>: fin del comando para crear un grupo.
CREAR UN BOTÓN • El más simple de los controles es un botón, éstos deben de estar definidos dentro de una etiqueta y grupo, ya sea existente o personal. El siguiente código nos muestra cómo se puede crear uno: • <button id="Boton" label="Texto" size="Largo" on. Action="Macro 1" image. Mso="Imagen" /> • button: comando para la creación del objeto. • id: nombre interno del control. • label: la etiqueta que aparece debajo del botón. • size: es el tamaño de la imagen que se va a mostrar en la cinta. • on. Action: el procedimiento que se va a ejecutar cuando el botón sea oprimido.
CREAR UN CASILLA DE VERIFICACIÓN • Ribbon. X nos permite crear en la cinta, casillas de verificación para activar o desactivar elementos. Esto se lleva a cabo con la siguiente instrucción: • <check. Box id="Casilla. V 1" label="Texto" on. Action="Macro 1"/> • check. Box: comando que crea una casilla de verificación. • id: nombre interno del control. • label: define el texto que va a aparecer como nombre de la etiqueta. • on. Action: el procedimiento que se va a ejecutar cuando el botón sea oprimido.
CREAR UN CONTROL DE UN COMANDO • Podemos invocar un comando de los usados en Excel para agregarlo a nuestras etiquetas personales, esto lo logramos con el siguiente código: • <control id. Mso="Comando"/> • control: instrucción que invoca a un comando de Excel. • id. Mso: identificador del control.
CREAR UN SEPARADOR • Los separadores nos permiten agrupar visualmente nuestros comandos para darles cierto orden dentro de nuestra etiqueta, el código: • <separator id="separator" /> • id: identificador del control que es la palabra separator.
- Slides: 74