Está en la página 1de 74

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] + [F11].
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 eso 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
• [ElseIf]
• [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ón1
• Código a realizar si se cumple la comparación 1
• [Case comparación2]
• [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 InputBox es:
• InputBox(“Texto” [,Titulo] [,Default] [,Izquierda]
• [,Arriba] [,ArchivoAyuda, IndiceArchivoAyuda] [,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.
• ArchivoAyuda y IndiceArchivoAyuda: 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:
• MsgBox (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 (UserForms).
• Cuando se requiera una forma de usuario, desde el
Editor de Visual Basic para Aplicaciones activamos
el menú de Insertar> UserForm. 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
• UserForm#.Show
• Donde # es el número de la forma que se
quiere mostrar.
Cerrar una forma
• Unload UserForm#
• Donde UserForm# es el nombre de la forma
que se quiere cerrar y descargar de memoria.
Ocultar una forma
• UserForm#.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:
• WorkSheet(“Hoja1”).Range(“A1”).Value = 43.5
• Si el rango está en la hoja seleccionada,
podemos utilizar sólo la propiedad:
• Range(“A1:J20”).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 GoTo
TomarAcciones
EJECUTAR UNA MACRO
PASO A PASO
• Una de las mejores formas de depurar una
macro es ejecutarla paso a 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 [F8] 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 ThisWorkbook, 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_BeforeClose)
• 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_BeforeSave)
• 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 Hoja1 es
seleccionada y puede ver este ejemplo en el
archivo Eventos Hoja.xlsm, en el módulo de
código de la Hoja1.
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 Hoja2 y puede ver este ejemplo en el
archivo Eventos Hoja.xlsm, en el módulo de
código de la Hoja2.
Evento cambiar
seleccion(Worksheet_SelectionChange)
• 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 (Hoja1) y la hoja que contiene la gráfica (Gráfica1).
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: OnKey y OnTime.
Evento OnKey
• 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 OnKey para asignar eventos a las teclas,
va más allá del libro que donde se ejecutó, es
decir, funcionará para todos los libros abiertos.
Evento OnTime
• Este evento se ejecuta en alguna hora en específico
o en algún día en particular. La sintaxis del evento
OnTime de la aplicación es:
• Application.OnTime tiempo, “Macro”[, TiempoFinal][,
Estado]
• Tiempo: la hora donde se quiere ejecutar el proceso.
• Macro: el procedimiento que se va a ejecutar.
• TiempoFinal: 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.AdvancedFilter Acción, Criterios, CopiarA, Unico
• Esto aplicado quedaría:
• Range(“A1:D100).AdvancedFilter xlFilterCopy, range("G1:J2"),
Range("G10:J10")
• Donde Range(“A1:D100) corresponde a Rango. El parámetro
xlFilterCopy es Acción, el parámetro de los criterios es
Range(“G1:J2”) y el último parámetro corresponde a donde se
ca a copiar la información. La sintaxis se puede desarrollar de
siguiente manera:
• Range(“A1:D100).AdvancedFilter
CriteriaRange:=Range("G1:J2"), Action:=xlFilterCopy,
CopyToRange:=Range("G10:J10")
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
WorksheetFunction 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 A10 de la hoja Formula:
• Range("A10").Formula = "=Sum(A2:A9)"
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 NombreArreglo()
• El NombreArreglo 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 NombreArreglo(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
CommandBar es la solución.
• Controles dentro del objeto CommandBar
• 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 CommandBar
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
CommandBars.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.CommandBars("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:
• CommandBars("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 RibbonX 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 CustomUI, 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="NuevaEtiqueta" label="Texto" insertAfterMso="TabHome">
• ‘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.
• insertAfterMso: 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="GrupoHerr" 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"
onAction="Macro1" imageMso="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.
• onAction: el procedimiento que se va a ejecutar cuando el botón
sea oprimido.
CREAR UN CASILLA DE
VERIFICACIÓN
• RibbonX 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:
• <checkBox id="CasillaV1" label="Texto"
onAction="Macro1"/>
• checkBox: 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.
• onAction: 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 idMso="Comando"/>
• control: instrucción que invoca a un comando
de Excel.
• idMso: 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.

También podría gustarte