SlideShare una empresa de Scribd logo
15
Lo más leído
16
Lo más leído
17
Lo más leído
Excel y Más por Otto J Gonzalez
Primera edición
Excel VBA
Guía Rápida
para principiantes
Aprende a crear proyectos VBA compatibles que se ejecutan
en Windows y en Mac OS X
i
© Excel y Más por Otto J González
El objetivo de esta publicación es, dar una Guía Rápida para quienes desean
aprender a programar en VBA para Excel, obteniendo las bases necesarias de
una forma práctica y sobre todo inmediata, en cuatro sencillos capítulos.
Soy MVP de Microsoft desde el año 2015, en la categoría Office Apps & Services.
Puedes visitarme en https://www.youtube.com/ottojaviergonzalez en donde encontra-
rás contenido audiovisual totalmente gratuito.
"El MVP de Microsoft es un galardón que se otorga a todas aquellas perso-
nas que con sus contribuciones ayudan y colaboran activamente en las comu-
nidades técnicas del mundo sobre herramientas de Microsoft
Excel VBA ❖ Guía Rápida
Acerca del Autor
Mi nombre es Otto Javier González, técnico pro-
gramador de Sistemas informáticos.
Mi trabajo se desarrolla dando soporte técnico a
la pequeña y mediana empresa.
En mi experiencia laboral, siempre ha estado
presente Excel. Es como la matemática, que está
presente en nuestro diario vivir. Yo soy de la opi-
nión, que si la tecnología nos da las herramien-
tas necesarias para optimizar nuestro trabajo…
pues hay que aprovecharlas al máximo.
OK... Muchos se preguntarán ¿Qué es Excel?
Excel es una Aplicación que nos permite adminis-
trar, calcular y analizar datos. Forma parte de Mi-
crosoft Office, un conjunto de productos que combina varios tipos de aplicaciones, que
nos ayudan a crear documentos, presentaciones, hojas de cálculo, bases de datos, ad-
ministrar correo electrónico, entre otras cosas.
La aplicación Microsoft Excel, es una herramienta que muchas veces ha sido subestima-
da por los usuarios, desconociendo su potencial real y no saben que podrían hacer, des-
de la tarea más sencilla, hasta los trabajos más complejos e inimaginables.
Conocer el funcionamiento de esta aplicación, es fundamental para cada usuario, ya
que hoy en día, la pequeña, mediana y gran empresa, cuentan con esta herramienta
de Office. Cabe mencionar también, que los que conocen su potencial, no invierten en
otros programas para administrar sus datos, porque saben lo que tienen en sus
manos.
Sin embargo no basta solo tener instalado este software, ya que si no sabemos cómo
utilizarlo, no podremos sacarle todo el funcionamiento que nos puede llegar a ofrecer.
¡Entrénate conmigo, mejora tus habilidades y sácale provecho a esta útil herramienta!
Otto J Gonzalez
www.excelymas.com
El Autor
1
Si eres un entusiasta y un amante de Microsoft Excel, pero que
únicamente te has dedicado a utilizar la herramienta de una
manera poco productiva, déjame decirte que no necesitas
tener amplios conocimientos de programación para
automatizar Excel según tus necesidades.
Debes tomar en cuenta que Excel ya incorpora de forma nativa
Visual Basic orientado a todas las aplicaciones que conforman
la Suite Ofimática de Microsoft.
Partiendo de ahí, ya tienes una herramienta muy importante e
imprescindible para alguien que desea ser más productivo en
su entorno laboral.
Pasos iniciales
3
Lo primero que debes hacer es activar la pestaña Programador
en la cinta de Opciones
Si eres usuario de Windows
Te diriges a Archivo > Opciones
Luego te aparecerá la siguiente ventana en donde seleccionas
Personalizar cinta de opciones y marcas la casilla de verifica-
ción correspondiente a la pestaña Programador y finalizas dan-
do clic en Aceptar
Sección 1
Activar la pestaña
Programador
4
Si eres usuario de Mac OS
Te diriges a Preferencias
Te aparecerá la siguiente
ventana
Seleccionas Barra de He-
rramientas y cinta de op-
ciones
En la siguiente ventana encontraremos la opción para activar la
pestaña Programador. Y finalizamos dando click en Guardar
5
Si eres usuario de Windows o Mac OS
Una vez activa la pestaña Programador (1), en el extremo iz-
quierdo encontrarás el botón que te permite ir al Editor de Vi-
sual Basic para Aplicaciones (2)
En Windows
En Mac OS
El entorno de Visual Basic o VBA es muy simple y fácil de en-
tender cada una de las herramientas.
En la parte superior izquierda del Editor, encontrarás el Explora-
dor de proyectos(1), y en la parte inferior, la Ventana de Propie-
dades (2)
El área de trabajo(3) la tienes a tu
derecha, que cuando agregues ob-
jetos, ya sean Formularios de
Usuarios, Módulos Estándar o Mó-
dulos de Clase, ahí será en donde
visualizarás el código de programa-
ción o el diseño de los Formula-
rios.
Si bien es cierto el entorno de VBA
es muy parecido en Windows y en
MacOS, sin embargo, en Sistemas Mac, en la última versión de
Excel, ya no es posible agregar Formularios de Usuarios como
interfaz de entrada.
Pero más adelante les mostraré una alternativa la cual nos per-
mitirá agregar Formularios de usuario en la versión MacOS
Si no tienes ningún conocimiento de programación previo, no te
preocupes. Únicamente toma en consideración algunos aspec-
Sección 2
Conociendo el
entorno de VBA
Dato interesante
Visual Basic para Aplica-
ciones fue implementa-
do por primera vez en
1993 en la versión 5.0
de Excel, en Sistema
Operativo Windows
6
tos y fundamentos para aprender a programar en Visual Basic
para aplicaciones y verás que no es difícil.
Digamos que esta guía viene siendo la receta perfecta para al-
guien que desea iniciar en la programación y automatización
de Excel en Visual Basic para Aplicaciones.
¿Y cuáles son los aspectos y fundamentos a los que me refie-
ro?
Pues, sencillamente son los siguientes:
•Los Objetos de Excel
•Declaración de Variables
•Tipos de Datos
•Asignación de Datos a las
Variables
•Ambitos de las Variables
(Su alcance dentro del pro-
yectoVBA
•Procedimientos
Formularios de Usuario
o UserForms
Nos permiten crear nuestros
propios diseños para automati-
zar las entradas de datos en
una hoja de cálculo
2
No creas que cada uno de los puntos que mencioné
en el capítulo anterior son difíciles de asimilar, ya
que una vez vayas conociendo cada objeto, cada
tipo de dato, cada ámbito, verás que la
automatización en Excel es muy divertida.
Aspectos y
Fundamentos
8
Antes de iniciar una automatización en VBA, tendrás que cono-
cer cuáles son los Objetos de Excel y de esa forma poder esta-
blecer referencias a dichos Objetos mediante código de progra-
mación VBA.
¿Y cuáles son los Objetos de Excel?
• Application
• La aplicación o instancia principal de Excel
• Workbooks
• Son los Libros de Trabajo dentro de la aplicación
• Sheet
• Son las Hojas de Cálculo dentro de un Libro de Trabajo
• Range
• Hace referencia a las celdas que contiene una Hoja de
Cálculo
Para una mejor comprensión, observa la siguiente imagen, que
te dará una mejor idea del contexto de los Objetos de Excel
Hay más objetos de Excel si hablamos
del entorno VBA, ya que los objetos
anteriormente mencionados, hacen re-
ferencia a la interfaz de usuario. Que
para automatizar una determinada ta-
rea, es muy importante entender cómo
funciona cada uno de ellos.
Sección 1
Los Objetos de
Excel Application
Workbooks
Sheets
Range
Importante
En programación
cada una de las lí-
neas de código y
objetos relaciona-
dos, se establecen
en inglés
9
Antes que nada ¿Qué es una Variable?
En términos prácticos y sin tan-
to tecnicismo, una variable es
un espacio en memoria que re-
servamos mediante la declara-
ción de un nombre, asignándole
el tipo de dato que vamos a al-
macenar. En la mayoría de los
casos las variables no son decla-
radas por los desarrolladores, lo
cual permite al sistema asignar-
le por defecto, un tipo de dato del tipo Variant
Es muy importante utilizar la sentencia Option Explicit para que
el sistema nos obligue a declarar las variables y que les asigne-
mos el tipo de dato que corresponde La palabra clave reserva-
da para declarar una variable es Dim seguida del nombre de la
variable, luego asignando el tipo de dato que utilicemos, sin olvi-
dar anteponer al tipo de dato la palabra reservada As, según el
ejemplo
Dim NombreVariable As TipoDato
Es de tomar en cuenta que las variables se declaran al princi-
pio de un procedimiento. De esa forma, si necesitas cambiar al-
gún tipo de dato, simplemente te diriges al inicio del procedi-
miento y ahí estarán todas las variables que gestionan el proce-
dimiento Sub
Sección 2
Declaración de
Variables
Toma Nota
Para dar seguimiento a
las variables declaradas,
es recomendable colocar-
le un prefijo descriptivo
que haga referencia al
tipo de dato establecido
10
Dependiendo de las tareas que vamos a automatizar, así será
la cantidad de variables a declarar y el tipo de datos a utilizar.
Algunas veces tendremos que crear variables con el tipo de da-
tos Variant, ya que dicha variable tendría que almacenar cade-
nas de texto, valores numéricos enteros, largos o tipos de fe-
chas. En esos casos pues declaramos variables de tipo Variant
Entre los tipos de datos que podemos establecer, tenemos los
siguientes:
Currency, el cual podemos utilizar para los valores de mone-
da.
Date, para los datos de tipo fecha.
Integer, para los números enteros.
Long, para los valores numéricos de gran tamaño.
String, utilizado para cadenas de texto.
Los tipos de datos antes mencionados son los que con más fre-
cuencia se utilizan, sin embargo, existen una gran cantidad de
tipos de datos que podemos establecer.
Es importante conocer y saber diferenciar los tipos de datos nu-
méricos. Si bien es cierto tenemos los tipos numéricos Integer
y Long, sin embargo existen otros tipos numéricos, que depen-
diendo del tamaño de almacenamiento que necesitemos, así
tendremos que implementarlos en nuestros desarrollos.
Checa los siguientes gráficos para que tengas una mejor idea.
El tipo Byte lo podemos utilizar para almacenar edades, ya que
no llegaríamos a utilizar un espacio tan grande como el tipo de
dato integer para almacenar una edad y por supuesto, sería
contraproducente utilizar el tipo de dato Long para pretender
almacenar datos de edades de personas.
Sección 3
Asignación de
Tipos de Datos
Byte
0 a 255
8 Bits
Integer
-32768 a 32767
2 Bytes
Long
-2.147.483.648 a
2.147.483.647
4 Bytes
11
Cuando trabajamos con variables debemos tomar en cuenta su
alcance dentro de un proyecto, ya que dependiendo el ámbito
en el que las declaremos, así tendrá efecto en parte o en el pro-
yecto completo.
Ámbito a nivel de procedimiento: implica que la variable ten-
drá su alcance en un procedimiento en particular.
Ámbito a nivel de módulo: En este ámbito podremos declarar
variables que alcancen a varios procedimientos que se encuen-
tren en un módulo. De esta forma los valores asignados a di-
chas variables, tendrán efecto en los procedimientos de donde
se les llame, obteniendo los valores almacenados en ellas.
Ámbito a nivel de proyecto: Dichas variables pueden declarar-
se en un módulo, pero si las declaramos anteponiendo la pala-
bra clave reservada Public, haremos que tengan un alcance glo-
bal, es decir, a nivel de todo el proyecto.
Sección 4
Ámbitos de las
Variables
Importante destacar
Las variables se destru-
yen cuando el procedi-
miento finaliza. Por lo
que después de ejecu-
tada, dicho espacio en
memoria se limpiará.
Toma muy en cuanta
Cuando declaras variable a
nivel de módulo, podrás cam-
biar la asignación de sus va-
lores en tiempo de ejecución
desde cualquier otro procedi-
miento, obteniendo resulta-
dos diferentes para cada uno
de ellos
12
De tal manera que no importa si llamamos dichas variables des-
de un procedimiento ubicado en otro módulo o en un User-
Form, de forma inmediata obtendremos los valores almacena-
dos, que si aún no tienen asignados valores, pues podremos
asignarlos desde cualquier punto del proyecto también.
Toma nota
observa que prácticamente es
un escenario parecido al ante-
rior. Sin embargo debes notar
que la declaración la hace-
mos de forma pública para
que su alcance tenga efecto
en todo el proyecto, pudiendo
hacer la llamada a dicha varia-
ble desde cualquier otra ubica-
ción, ya sea UserForm o un
módulo distinto.
3
Hagamos un ejercicio práctico, insertando y
automatizando un UserForm (Formulario de Usuario),
lo cual nos permitirá enviar datos a una hoja de
cálculo.
Ejercicio Práctico
14
Insertando un UserForm
En el editor de Visual Ba-
sic, damos click en inser-
tar y seleccionamos la
opción UserForm, y el
formulario se mostrará
en modo de diseño para
que le podamos insertar
los objetos que necesite-
mos para nuestra auto-
matización, entre los
cuales tenemos cuadros de texto, cuadros combinados, cua-
dros de lista y botones de comando. Hay muchísimos objetos
para cada necesidad, por lo que nuestros desarrollos tendrán
muchas posibilidades.
Debes tomar muy en cuenta que cada objeto o control que
agregues, tendrás la posibilidad de cambiar sus propiedades
según lo que necesites.
Como por ejemplo
cambiar la propie-
dad Caption del
UserForm para
que en su barra
de título se mues-
tre “Registro de
Clientes”
De esta forma podrás cambiar detalles a la interfaz de usuario
que estés desarrollando.
Sección 1
UserForm en
Windows
15
Muy bien, agreguemos un par de cajas de texto, dos etiquetas
y un botón de comando con el propósito de enviar datos a una
hoja de cálculo.
Una vez tengamos nues-
tro formulario diseñado a
nuestro gusto, debemos
aplicarle la programación
correspondiente al botón
de comando, por lo cual
daremos doble click so-
bre él, para ingresar a su
evento click.
Nuestro código quedaría de la siguiente forma.
Damos click en el comando ejecutar y precedemos a registrar
datos
16
Y ya haz programado tu primer UserForm que inserta datos en
la Hoja1 de tu libro de trabajo.
Que después de cada registro, te saldrá una caja de mensaje
confirmando que los datos fueros registrados con éxito.
Este código de programación te servirá de base para que pue-
das realizar tus propias automatizaciones, ya que contiene los
elementos claves, como el poder identificar la última fila en los
registros para agregar uno nuevo
Voy a hacer una breve explicación del código de programación.
Se han declarado tres variables, de las cuales, dos son del tipo
String y una del tipo Long.
Con la variable UltFila identificamos el número de registros con-
tenidos en el rango de datos, asignándole el conteo de las filas
que conforman la región de dicho rango, para lo cual sumamos
uno, para ubicarnos en la fila vacía y de esa forma poder escri-
bir un nuevo registro.
A la variable sMensaje que es de tipo String, se le asigna una
cadena de texto para que notifique al usuario final que los da-
tos han sido registrados con éxito.
La variable la utilizamos al final del procedimiento, haciendo
uso de la función MsgBox, la cual pide diferentes argumentos,
17
entre los cuales, los relevantes son: el Prompt o cadena de ca-
racteres que se muestran de manera informativa; tenemos tam-
bién el estilo de botones e ícono que denota el tipo de informa-
ción a notificar; y el título, lo cual aparece en la parte superior
del mensaje
A la variable sTitulo que también es del tipo string, se le ha asig-
nado el título que llevará la ventana del Msgbox
Pudimos haber puesto directamente las cadenas de texto en el
MsgBox, sin embargo, lo he realizado así con propósitos de
aprendizaje y que veas cómo se declaran las variables, y se les
asignan datos para luego mostrar sus resultados.
Generalmente yo en lo personal,
cuando creo proyectos grandes y
manejo muchas cajas de mensa-
je, lo que hago es declarar las va-
riables correspondientes al men-
saje y al título de forma pública, para hacer la llamada desde
cualquier ubicación del proyecto, y simplemente obtener su re-
sultado con la función MsgBox.
Con este ejemplo tendrás una noción más clara y precisa de
cómo gestionar información entre un UserForm y la hoja de cál-
culo.
Y ahora surge la gran pregunta...
¿Cómo podemos insertar UserForms en un Libro de Excel so-
bre un Sistema Operativo Mac?
4
En este capítulo aprenderemos a crear
proyectos que trabajen de forma compatible
para Windows y Mac
Compatibilidad
Windows y Mac OS
19
Compatibilidad para Win OS y Mac OS
Los UserForm o formularios de usuario nos permiten crear una
interfaz de entrada para que el usuario final pueda interactuar
entre el formulario y la hoja de cálculo. Como mencioné ante-
riormente en la versión actual de Office para Mac, no tiene so-
porte para insertar formularios de usuario en VBA, esto quedó
vigente únicamente hasta la versión 11 de la suite ofimática pa-
ra Mac.
Sin embargo para los usuarios de Mac, deberán tener acceso a
un PC con Windows o una máquina virtual para poder crear de-
sarrollos que incluyan formularios en la versión de Office para
Mac, de lo contrario tendrán que limitarse a realizar automatiza-
ciones únicamente a nivel de módulos.
Para crear un proyecto que incluya formularios en Mac, tendrán
que crear el proyecto desde Windows, realizando ciertas imple-
mentaciones y preparando los formularios para que sean com-
patibles con un sistema operativo Mac. Yo se que eso implicará
la necesidad de contar con más recursos, pero por el momento
es la única alternativa.
Al momento de insertar UserForms en Windows y cuando eje-
cutamos dichos UserForms en un sistema Mac, el problema
más notable es, la diferencia de resolución de pantalla entre las
dos plataformas. En Mac son 96 ppp, donde cada punto repre-
senta un pixel, mientras que en Windows, es de 72 ppp(puntos
por pulgada) y cada punto representa un “punto”.
Si no resolvemos y corregimos las diferencias de unidad de me-
dida, cuando ejecutemos el UserForm en Mac, resultará un for-
mulario más pequeño, por lo que su lectura será difícil para el
usuario final.
Jon Peltier nos resuelve este pro-
blema de una forma muy práctica y
precisa, mediante la inserción de
cierto código de programación que
cambia el tamaño de los formularios
en Mac en concordancia con las me-
didas en un sistema operativo
Windows.
Aquí te dejo el enlace de su publica-
ción original
https://peltiertech.com/userforms-for-mac-and-windows
Sección 1
Insertar un
UserForm
“While Microsoft has
substantially improved
the VB editor on the
Mac, you still can’t work
with UserForms on the
Mac. You have to build
them into your file in
Windows and them mo-
ve the file to the Mac.”
Jon Peltier
20
A continuación hagamos un ejemplo según la solución que nos
ofrece Jon Peltier.
En Windows insertaré un UserForm, pero antes agreguemos
un módulo estándar en el cual colocaremos el código fuente
que nos proporciona Jon Peltier.
Una vez tengamos nuestro módulo agregado, podríamos cam-
biarle de nombre, pero yo lo dejaré con el nombre de Módulo1.
Procedo a agregarle el código de programación de Peltier y me
quedaría de la siguiente manera.
Este código lo pueden copiar y pegar desde el enlace que les
compartí anteriormente.Agreguemos el UserForm, el cual lleva-
rá las siguientes líneas en su evento Initialize
Private Sub UserForm_Initialize()
#If Mac Then
ResizeUserForm Me
#End If
End Sub
21
Ingresamos al evento Initialize y quedaría de la siguiente mane-
ra.
En esta condición If, es-
tablecemos que, si el
Libro de trabajo es
abierto en un Mac, que
haga la llamada al pro-
cedimiento que cambia
el tamaño de un User-
Form, en donde puedes notar que le pasamos como argumen-
to el nombre del UserForm que estamos lanzando, en su defec-
to Me. También es de notar que dicho procedimiento contempla
un argumento opcional que permite establecer el porcentaje del
tamaño del formulario, sin embargo prefiero dejarlo por defecto
al porcentaje seleccionado por Peltier, que eso trabaja muy
bien.
Que si abres el libro de trabajo en Windows, como en el ejem-
plo de Peltier, obviamente la condición If será ignorada para
mostrar el formulario en su tamaño original.
Observa cómo se lanza en un Mac
¿Qué es lo que hace el procedimiento de Peltier?, pues ajustar
los valores de medidas que les explicaba anteriormente, para
que cuando se abra en un Mac, el texto y formulario se ajuste
22
al tamaño según las medidas que podríamos tener en
Windows, dando un tamaño proporcional en el Mac, para que
el UserForm sea legible a la vista del usuario final. Pueden leer
el artículo original donde Jon Peltier lo explica de mejor manera
:)
Si no tuviéramos la solución de Peltier, pues el UserForm en
los Mac se vería así
Hago la comparación con el UserForm que sí tiene aplicada la
solución de Peltier (izquierda) con el UserForm que no cuenta
con el ajuste de tamaño (derecha), que como puedes observar
el UserForm es muy pequeño. El UserForm aunque pequeño,
veo que sí es legible, pero al momento de lanzarlo, no se ve en
concordancia con la escala de las ventanas que manejamos en
Mac, lo cual puede provocar una sensación de desajuste.
En lo personal estoy muy agradecido con la solución de Jon
Peltier, ya que me ha sido de muchísima utilidad en mis desa-
rrollos que distribuyo en Mac.
Comentario Final
Hay que tomar muy en cuenta que la limitante principal para au-
tomatizar UserForms en un Mac, es precisamente eso, la caren-
cia de la posibilidad de insertar UserForms directamente en el
Editor VBA de un Mac, y es por ello que debemos hacer uso de
estas alternativas, desarrollando antes nuestros proyectos des-
de Windows, pensando en la posibilidad que puedan abrirse en
un Mac. Además, es de considerar que algunos elementos que
insertemos en Windows puede que no sean compatibles en
Mac, como la inserción de botones ActiveX que se insertan en
la interfaz de usuario en Windows, que en Mac no serán compa-
tibles, por lo que dichos botones tendrán que insertarse desde
el propio Mac. Y de esta forma iremos creando y equilibrando
un proyecto compatible para ambos sistemas operativos.
Muchas gracias por haberme acompañado en esta lectura, nos
veremos en una próxima publicación.
Otto J González
El Autor

Más contenido relacionado

PPTX
Mapa conceptual
PPTX
Modelos Lógicos Basados en Objetos
DOCX
Quimica unidad 2 elementos quimicos y su clasificación
PPTX
Programación 3: árboles de búsqueda equilibrados
PDF
Metodo burbuja
PPSX
Modelo Entidad Relación
PDF
Ejercicio 2
PPTX
El modelo entidad relación
Mapa conceptual
Modelos Lógicos Basados en Objetos
Quimica unidad 2 elementos quimicos y su clasificación
Programación 3: árboles de búsqueda equilibrados
Metodo burbuja
Modelo Entidad Relación
Ejercicio 2
El modelo entidad relación

La actualidad más candente (20)

PPTX
Energia de ionizacion
DOCX
Practica 3 multimetro
PDF
Programa de Fisica II de la unefa venezuela.pdf
PDF
Etapasdelainvestigacion
PPT
CONFIGURACIÓN ELECTRÓNICA Y NÚMEROS CUÁNTICOS Lic. Javier Cucaita
DOCX
Ejercicios de base de datos
PDF
U7 campo-magnético
PPTX
DOCX
Proyecto fisica electrica
PDF
Modelo entidad relacion
PDF
Consultas básicas en sql server
DOCX
Diccionario De Datos
PPS
Enlace Químico
PPT
Recorrido en árboles binarios
PPS
Leyes de kirchhoff
DOCX
DOC
Ejercicios de potencia y energía eléctrica
PPTX
Árbol de prefijos
DOCX
Ejemplo de Diagrama de actividad
PPTX
Uso de normas APA para citas y referencias
Energia de ionizacion
Practica 3 multimetro
Programa de Fisica II de la unefa venezuela.pdf
Etapasdelainvestigacion
CONFIGURACIÓN ELECTRÓNICA Y NÚMEROS CUÁNTICOS Lic. Javier Cucaita
Ejercicios de base de datos
U7 campo-magnético
Proyecto fisica electrica
Modelo entidad relacion
Consultas básicas en sql server
Diccionario De Datos
Enlace Químico
Recorrido en árboles binarios
Leyes de kirchhoff
Ejercicios de potencia y energía eléctrica
Árbol de prefijos
Ejemplo de Diagrama de actividad
Uso de normas APA para citas y referencias
Publicidad

Similar a Excel VBA Guía Rápida para principiantes.pdf (20)

DOCX
Base de datos de excel (antologia)
DOCX
Antología
DOCX
Por qué usar vba en excel 2010
DOCX
Por qué usar vba en excel 2010
PDF
6pasosmacroseficientes.pdf
PDF
VBA Access (versiones 2019 y Office 365) Programar en Access.pdf
PDF
Macros exce vperez1
PDF
Macros-para-microsoft-excel
PDF
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx.pdf
PDF
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx (1).pdf
PDF
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx.pdf
DOCX
Trabajo de tecnologia(macro)
DOCX
Macro
PDF
Introduccion a ms excel
PPSX
DOCX
Microsoft Excel
PDF
Introcuccion a ms excel 1
PDF
Secretos Excel desde Cero.pdf
PDF
Programación VBA con Excel - Manuel Ángel Torres Remon-FREELIBROS.ME.pdf
PPTX
Basicos De Office, Vianey Alba
Base de datos de excel (antologia)
Antología
Por qué usar vba en excel 2010
Por qué usar vba en excel 2010
6pasosmacroseficientes.pdf
VBA Access (versiones 2019 y Office 365) Programar en Access.pdf
Macros exce vperez1
Macros-para-microsoft-excel
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx (1).pdf
TALLER DE TECNOLOGIA GRUPO 6, TERCER PERIODO 10-2..docx.pdf
Trabajo de tecnologia(macro)
Macro
Introduccion a ms excel
Microsoft Excel
Introcuccion a ms excel 1
Secretos Excel desde Cero.pdf
Programación VBA con Excel - Manuel Ángel Torres Remon-FREELIBROS.ME.pdf
Basicos De Office, Vianey Alba
Publicidad

Último (20)

PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
DI, TEA, TDAH.pdf guía se secuencias didacticas
Tarea De El Colegio Coding For Kids 1 y 2
caso clínico iam clinica y semiología l3.pptx
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
biología es un libro sobre casi todo el tema de biología
Escuelas Desarmando una mirada subjetiva a la educación
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
ciencias-1.pdf libro cuarto basico niños
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
V UNIDAD - SEGUNDO GRADO. del mes de agosto

Excel VBA Guía Rápida para principiantes.pdf

  • 1. Excel y Más por Otto J Gonzalez Primera edición Excel VBA Guía Rápida para principiantes Aprende a crear proyectos VBA compatibles que se ejecutan en Windows y en Mac OS X
  • 2. i © Excel y Más por Otto J González El objetivo de esta publicación es, dar una Guía Rápida para quienes desean aprender a programar en VBA para Excel, obteniendo las bases necesarias de una forma práctica y sobre todo inmediata, en cuatro sencillos capítulos. Soy MVP de Microsoft desde el año 2015, en la categoría Office Apps & Services. Puedes visitarme en https://www.youtube.com/ottojaviergonzalez en donde encontra- rás contenido audiovisual totalmente gratuito. "El MVP de Microsoft es un galardón que se otorga a todas aquellas perso- nas que con sus contribuciones ayudan y colaboran activamente en las comu- nidades técnicas del mundo sobre herramientas de Microsoft Excel VBA ❖ Guía Rápida Acerca del Autor Mi nombre es Otto Javier González, técnico pro- gramador de Sistemas informáticos. Mi trabajo se desarrolla dando soporte técnico a la pequeña y mediana empresa. En mi experiencia laboral, siempre ha estado presente Excel. Es como la matemática, que está presente en nuestro diario vivir. Yo soy de la opi- nión, que si la tecnología nos da las herramien- tas necesarias para optimizar nuestro trabajo… pues hay que aprovecharlas al máximo. OK... Muchos se preguntarán ¿Qué es Excel? Excel es una Aplicación que nos permite adminis- trar, calcular y analizar datos. Forma parte de Mi- crosoft Office, un conjunto de productos que combina varios tipos de aplicaciones, que nos ayudan a crear documentos, presentaciones, hojas de cálculo, bases de datos, ad- ministrar correo electrónico, entre otras cosas. La aplicación Microsoft Excel, es una herramienta que muchas veces ha sido subestima- da por los usuarios, desconociendo su potencial real y no saben que podrían hacer, des- de la tarea más sencilla, hasta los trabajos más complejos e inimaginables. Conocer el funcionamiento de esta aplicación, es fundamental para cada usuario, ya que hoy en día, la pequeña, mediana y gran empresa, cuentan con esta herramienta de Office. Cabe mencionar también, que los que conocen su potencial, no invierten en otros programas para administrar sus datos, porque saben lo que tienen en sus manos. Sin embargo no basta solo tener instalado este software, ya que si no sabemos cómo utilizarlo, no podremos sacarle todo el funcionamiento que nos puede llegar a ofrecer. ¡Entrénate conmigo, mejora tus habilidades y sácale provecho a esta útil herramienta! Otto J Gonzalez www.excelymas.com El Autor
  • 3. 1 Si eres un entusiasta y un amante de Microsoft Excel, pero que únicamente te has dedicado a utilizar la herramienta de una manera poco productiva, déjame decirte que no necesitas tener amplios conocimientos de programación para automatizar Excel según tus necesidades. Debes tomar en cuenta que Excel ya incorpora de forma nativa Visual Basic orientado a todas las aplicaciones que conforman la Suite Ofimática de Microsoft. Partiendo de ahí, ya tienes una herramienta muy importante e imprescindible para alguien que desea ser más productivo en su entorno laboral. Pasos iniciales
  • 4. 3 Lo primero que debes hacer es activar la pestaña Programador en la cinta de Opciones Si eres usuario de Windows Te diriges a Archivo > Opciones Luego te aparecerá la siguiente ventana en donde seleccionas Personalizar cinta de opciones y marcas la casilla de verifica- ción correspondiente a la pestaña Programador y finalizas dan- do clic en Aceptar Sección 1 Activar la pestaña Programador
  • 5. 4 Si eres usuario de Mac OS Te diriges a Preferencias Te aparecerá la siguiente ventana Seleccionas Barra de He- rramientas y cinta de op- ciones En la siguiente ventana encontraremos la opción para activar la pestaña Programador. Y finalizamos dando click en Guardar
  • 6. 5 Si eres usuario de Windows o Mac OS Una vez activa la pestaña Programador (1), en el extremo iz- quierdo encontrarás el botón que te permite ir al Editor de Vi- sual Basic para Aplicaciones (2) En Windows En Mac OS El entorno de Visual Basic o VBA es muy simple y fácil de en- tender cada una de las herramientas. En la parte superior izquierda del Editor, encontrarás el Explora- dor de proyectos(1), y en la parte inferior, la Ventana de Propie- dades (2) El área de trabajo(3) la tienes a tu derecha, que cuando agregues ob- jetos, ya sean Formularios de Usuarios, Módulos Estándar o Mó- dulos de Clase, ahí será en donde visualizarás el código de programa- ción o el diseño de los Formula- rios. Si bien es cierto el entorno de VBA es muy parecido en Windows y en MacOS, sin embargo, en Sistemas Mac, en la última versión de Excel, ya no es posible agregar Formularios de Usuarios como interfaz de entrada. Pero más adelante les mostraré una alternativa la cual nos per- mitirá agregar Formularios de usuario en la versión MacOS Si no tienes ningún conocimiento de programación previo, no te preocupes. Únicamente toma en consideración algunos aspec- Sección 2 Conociendo el entorno de VBA Dato interesante Visual Basic para Aplica- ciones fue implementa- do por primera vez en 1993 en la versión 5.0 de Excel, en Sistema Operativo Windows
  • 7. 6 tos y fundamentos para aprender a programar en Visual Basic para aplicaciones y verás que no es difícil. Digamos que esta guía viene siendo la receta perfecta para al- guien que desea iniciar en la programación y automatización de Excel en Visual Basic para Aplicaciones. ¿Y cuáles son los aspectos y fundamentos a los que me refie- ro? Pues, sencillamente son los siguientes: •Los Objetos de Excel •Declaración de Variables •Tipos de Datos •Asignación de Datos a las Variables •Ambitos de las Variables (Su alcance dentro del pro- yectoVBA •Procedimientos Formularios de Usuario o UserForms Nos permiten crear nuestros propios diseños para automati- zar las entradas de datos en una hoja de cálculo
  • 8. 2 No creas que cada uno de los puntos que mencioné en el capítulo anterior son difíciles de asimilar, ya que una vez vayas conociendo cada objeto, cada tipo de dato, cada ámbito, verás que la automatización en Excel es muy divertida. Aspectos y Fundamentos
  • 9. 8 Antes de iniciar una automatización en VBA, tendrás que cono- cer cuáles son los Objetos de Excel y de esa forma poder esta- blecer referencias a dichos Objetos mediante código de progra- mación VBA. ¿Y cuáles son los Objetos de Excel? • Application • La aplicación o instancia principal de Excel • Workbooks • Son los Libros de Trabajo dentro de la aplicación • Sheet • Son las Hojas de Cálculo dentro de un Libro de Trabajo • Range • Hace referencia a las celdas que contiene una Hoja de Cálculo Para una mejor comprensión, observa la siguiente imagen, que te dará una mejor idea del contexto de los Objetos de Excel Hay más objetos de Excel si hablamos del entorno VBA, ya que los objetos anteriormente mencionados, hacen re- ferencia a la interfaz de usuario. Que para automatizar una determinada ta- rea, es muy importante entender cómo funciona cada uno de ellos. Sección 1 Los Objetos de Excel Application Workbooks Sheets Range Importante En programación cada una de las lí- neas de código y objetos relaciona- dos, se establecen en inglés
  • 10. 9 Antes que nada ¿Qué es una Variable? En términos prácticos y sin tan- to tecnicismo, una variable es un espacio en memoria que re- servamos mediante la declara- ción de un nombre, asignándole el tipo de dato que vamos a al- macenar. En la mayoría de los casos las variables no son decla- radas por los desarrolladores, lo cual permite al sistema asignar- le por defecto, un tipo de dato del tipo Variant Es muy importante utilizar la sentencia Option Explicit para que el sistema nos obligue a declarar las variables y que les asigne- mos el tipo de dato que corresponde La palabra clave reserva- da para declarar una variable es Dim seguida del nombre de la variable, luego asignando el tipo de dato que utilicemos, sin olvi- dar anteponer al tipo de dato la palabra reservada As, según el ejemplo Dim NombreVariable As TipoDato Es de tomar en cuenta que las variables se declaran al princi- pio de un procedimiento. De esa forma, si necesitas cambiar al- gún tipo de dato, simplemente te diriges al inicio del procedi- miento y ahí estarán todas las variables que gestionan el proce- dimiento Sub Sección 2 Declaración de Variables Toma Nota Para dar seguimiento a las variables declaradas, es recomendable colocar- le un prefijo descriptivo que haga referencia al tipo de dato establecido
  • 11. 10 Dependiendo de las tareas que vamos a automatizar, así será la cantidad de variables a declarar y el tipo de datos a utilizar. Algunas veces tendremos que crear variables con el tipo de da- tos Variant, ya que dicha variable tendría que almacenar cade- nas de texto, valores numéricos enteros, largos o tipos de fe- chas. En esos casos pues declaramos variables de tipo Variant Entre los tipos de datos que podemos establecer, tenemos los siguientes: Currency, el cual podemos utilizar para los valores de mone- da. Date, para los datos de tipo fecha. Integer, para los números enteros. Long, para los valores numéricos de gran tamaño. String, utilizado para cadenas de texto. Los tipos de datos antes mencionados son los que con más fre- cuencia se utilizan, sin embargo, existen una gran cantidad de tipos de datos que podemos establecer. Es importante conocer y saber diferenciar los tipos de datos nu- méricos. Si bien es cierto tenemos los tipos numéricos Integer y Long, sin embargo existen otros tipos numéricos, que depen- diendo del tamaño de almacenamiento que necesitemos, así tendremos que implementarlos en nuestros desarrollos. Checa los siguientes gráficos para que tengas una mejor idea. El tipo Byte lo podemos utilizar para almacenar edades, ya que no llegaríamos a utilizar un espacio tan grande como el tipo de dato integer para almacenar una edad y por supuesto, sería contraproducente utilizar el tipo de dato Long para pretender almacenar datos de edades de personas. Sección 3 Asignación de Tipos de Datos Byte 0 a 255 8 Bits Integer -32768 a 32767 2 Bytes Long -2.147.483.648 a 2.147.483.647 4 Bytes
  • 12. 11 Cuando trabajamos con variables debemos tomar en cuenta su alcance dentro de un proyecto, ya que dependiendo el ámbito en el que las declaremos, así tendrá efecto en parte o en el pro- yecto completo. Ámbito a nivel de procedimiento: implica que la variable ten- drá su alcance en un procedimiento en particular. Ámbito a nivel de módulo: En este ámbito podremos declarar variables que alcancen a varios procedimientos que se encuen- tren en un módulo. De esta forma los valores asignados a di- chas variables, tendrán efecto en los procedimientos de donde se les llame, obteniendo los valores almacenados en ellas. Ámbito a nivel de proyecto: Dichas variables pueden declarar- se en un módulo, pero si las declaramos anteponiendo la pala- bra clave reservada Public, haremos que tengan un alcance glo- bal, es decir, a nivel de todo el proyecto. Sección 4 Ámbitos de las Variables Importante destacar Las variables se destru- yen cuando el procedi- miento finaliza. Por lo que después de ejecu- tada, dicho espacio en memoria se limpiará. Toma muy en cuanta Cuando declaras variable a nivel de módulo, podrás cam- biar la asignación de sus va- lores en tiempo de ejecución desde cualquier otro procedi- miento, obteniendo resulta- dos diferentes para cada uno de ellos
  • 13. 12 De tal manera que no importa si llamamos dichas variables des- de un procedimiento ubicado en otro módulo o en un User- Form, de forma inmediata obtendremos los valores almacena- dos, que si aún no tienen asignados valores, pues podremos asignarlos desde cualquier punto del proyecto también. Toma nota observa que prácticamente es un escenario parecido al ante- rior. Sin embargo debes notar que la declaración la hace- mos de forma pública para que su alcance tenga efecto en todo el proyecto, pudiendo hacer la llamada a dicha varia- ble desde cualquier otra ubica- ción, ya sea UserForm o un módulo distinto.
  • 14. 3 Hagamos un ejercicio práctico, insertando y automatizando un UserForm (Formulario de Usuario), lo cual nos permitirá enviar datos a una hoja de cálculo. Ejercicio Práctico
  • 15. 14 Insertando un UserForm En el editor de Visual Ba- sic, damos click en inser- tar y seleccionamos la opción UserForm, y el formulario se mostrará en modo de diseño para que le podamos insertar los objetos que necesite- mos para nuestra auto- matización, entre los cuales tenemos cuadros de texto, cuadros combinados, cua- dros de lista y botones de comando. Hay muchísimos objetos para cada necesidad, por lo que nuestros desarrollos tendrán muchas posibilidades. Debes tomar muy en cuenta que cada objeto o control que agregues, tendrás la posibilidad de cambiar sus propiedades según lo que necesites. Como por ejemplo cambiar la propie- dad Caption del UserForm para que en su barra de título se mues- tre “Registro de Clientes” De esta forma podrás cambiar detalles a la interfaz de usuario que estés desarrollando. Sección 1 UserForm en Windows
  • 16. 15 Muy bien, agreguemos un par de cajas de texto, dos etiquetas y un botón de comando con el propósito de enviar datos a una hoja de cálculo. Una vez tengamos nues- tro formulario diseñado a nuestro gusto, debemos aplicarle la programación correspondiente al botón de comando, por lo cual daremos doble click so- bre él, para ingresar a su evento click. Nuestro código quedaría de la siguiente forma. Damos click en el comando ejecutar y precedemos a registrar datos
  • 17. 16 Y ya haz programado tu primer UserForm que inserta datos en la Hoja1 de tu libro de trabajo. Que después de cada registro, te saldrá una caja de mensaje confirmando que los datos fueros registrados con éxito. Este código de programación te servirá de base para que pue- das realizar tus propias automatizaciones, ya que contiene los elementos claves, como el poder identificar la última fila en los registros para agregar uno nuevo Voy a hacer una breve explicación del código de programación. Se han declarado tres variables, de las cuales, dos son del tipo String y una del tipo Long. Con la variable UltFila identificamos el número de registros con- tenidos en el rango de datos, asignándole el conteo de las filas que conforman la región de dicho rango, para lo cual sumamos uno, para ubicarnos en la fila vacía y de esa forma poder escri- bir un nuevo registro. A la variable sMensaje que es de tipo String, se le asigna una cadena de texto para que notifique al usuario final que los da- tos han sido registrados con éxito. La variable la utilizamos al final del procedimiento, haciendo uso de la función MsgBox, la cual pide diferentes argumentos,
  • 18. 17 entre los cuales, los relevantes son: el Prompt o cadena de ca- racteres que se muestran de manera informativa; tenemos tam- bién el estilo de botones e ícono que denota el tipo de informa- ción a notificar; y el título, lo cual aparece en la parte superior del mensaje A la variable sTitulo que también es del tipo string, se le ha asig- nado el título que llevará la ventana del Msgbox Pudimos haber puesto directamente las cadenas de texto en el MsgBox, sin embargo, lo he realizado así con propósitos de aprendizaje y que veas cómo se declaran las variables, y se les asignan datos para luego mostrar sus resultados. Generalmente yo en lo personal, cuando creo proyectos grandes y manejo muchas cajas de mensa- je, lo que hago es declarar las va- riables correspondientes al men- saje y al título de forma pública, para hacer la llamada desde cualquier ubicación del proyecto, y simplemente obtener su re- sultado con la función MsgBox. Con este ejemplo tendrás una noción más clara y precisa de cómo gestionar información entre un UserForm y la hoja de cál- culo. Y ahora surge la gran pregunta... ¿Cómo podemos insertar UserForms en un Libro de Excel so- bre un Sistema Operativo Mac?
  • 19. 4 En este capítulo aprenderemos a crear proyectos que trabajen de forma compatible para Windows y Mac Compatibilidad Windows y Mac OS
  • 20. 19 Compatibilidad para Win OS y Mac OS Los UserForm o formularios de usuario nos permiten crear una interfaz de entrada para que el usuario final pueda interactuar entre el formulario y la hoja de cálculo. Como mencioné ante- riormente en la versión actual de Office para Mac, no tiene so- porte para insertar formularios de usuario en VBA, esto quedó vigente únicamente hasta la versión 11 de la suite ofimática pa- ra Mac. Sin embargo para los usuarios de Mac, deberán tener acceso a un PC con Windows o una máquina virtual para poder crear de- sarrollos que incluyan formularios en la versión de Office para Mac, de lo contrario tendrán que limitarse a realizar automatiza- ciones únicamente a nivel de módulos. Para crear un proyecto que incluya formularios en Mac, tendrán que crear el proyecto desde Windows, realizando ciertas imple- mentaciones y preparando los formularios para que sean com- patibles con un sistema operativo Mac. Yo se que eso implicará la necesidad de contar con más recursos, pero por el momento es la única alternativa. Al momento de insertar UserForms en Windows y cuando eje- cutamos dichos UserForms en un sistema Mac, el problema más notable es, la diferencia de resolución de pantalla entre las dos plataformas. En Mac son 96 ppp, donde cada punto repre- senta un pixel, mientras que en Windows, es de 72 ppp(puntos por pulgada) y cada punto representa un “punto”. Si no resolvemos y corregimos las diferencias de unidad de me- dida, cuando ejecutemos el UserForm en Mac, resultará un for- mulario más pequeño, por lo que su lectura será difícil para el usuario final. Jon Peltier nos resuelve este pro- blema de una forma muy práctica y precisa, mediante la inserción de cierto código de programación que cambia el tamaño de los formularios en Mac en concordancia con las me- didas en un sistema operativo Windows. Aquí te dejo el enlace de su publica- ción original https://peltiertech.com/userforms-for-mac-and-windows Sección 1 Insertar un UserForm “While Microsoft has substantially improved the VB editor on the Mac, you still can’t work with UserForms on the Mac. You have to build them into your file in Windows and them mo- ve the file to the Mac.” Jon Peltier
  • 21. 20 A continuación hagamos un ejemplo según la solución que nos ofrece Jon Peltier. En Windows insertaré un UserForm, pero antes agreguemos un módulo estándar en el cual colocaremos el código fuente que nos proporciona Jon Peltier. Una vez tengamos nuestro módulo agregado, podríamos cam- biarle de nombre, pero yo lo dejaré con el nombre de Módulo1. Procedo a agregarle el código de programación de Peltier y me quedaría de la siguiente manera. Este código lo pueden copiar y pegar desde el enlace que les compartí anteriormente.Agreguemos el UserForm, el cual lleva- rá las siguientes líneas en su evento Initialize Private Sub UserForm_Initialize() #If Mac Then ResizeUserForm Me #End If End Sub
  • 22. 21 Ingresamos al evento Initialize y quedaría de la siguiente mane- ra. En esta condición If, es- tablecemos que, si el Libro de trabajo es abierto en un Mac, que haga la llamada al pro- cedimiento que cambia el tamaño de un User- Form, en donde puedes notar que le pasamos como argumen- to el nombre del UserForm que estamos lanzando, en su defec- to Me. También es de notar que dicho procedimiento contempla un argumento opcional que permite establecer el porcentaje del tamaño del formulario, sin embargo prefiero dejarlo por defecto al porcentaje seleccionado por Peltier, que eso trabaja muy bien. Que si abres el libro de trabajo en Windows, como en el ejem- plo de Peltier, obviamente la condición If será ignorada para mostrar el formulario en su tamaño original. Observa cómo se lanza en un Mac ¿Qué es lo que hace el procedimiento de Peltier?, pues ajustar los valores de medidas que les explicaba anteriormente, para que cuando se abra en un Mac, el texto y formulario se ajuste
  • 23. 22 al tamaño según las medidas que podríamos tener en Windows, dando un tamaño proporcional en el Mac, para que el UserForm sea legible a la vista del usuario final. Pueden leer el artículo original donde Jon Peltier lo explica de mejor manera :) Si no tuviéramos la solución de Peltier, pues el UserForm en los Mac se vería así Hago la comparación con el UserForm que sí tiene aplicada la solución de Peltier (izquierda) con el UserForm que no cuenta con el ajuste de tamaño (derecha), que como puedes observar el UserForm es muy pequeño. El UserForm aunque pequeño, veo que sí es legible, pero al momento de lanzarlo, no se ve en concordancia con la escala de las ventanas que manejamos en Mac, lo cual puede provocar una sensación de desajuste. En lo personal estoy muy agradecido con la solución de Jon Peltier, ya que me ha sido de muchísima utilidad en mis desa- rrollos que distribuyo en Mac. Comentario Final Hay que tomar muy en cuenta que la limitante principal para au- tomatizar UserForms en un Mac, es precisamente eso, la caren- cia de la posibilidad de insertar UserForms directamente en el Editor VBA de un Mac, y es por ello que debemos hacer uso de estas alternativas, desarrollando antes nuestros proyectos des- de Windows, pensando en la posibilidad que puedan abrirse en un Mac. Además, es de considerar que algunos elementos que insertemos en Windows puede que no sean compatibles en Mac, como la inserción de botones ActiveX que se insertan en la interfaz de usuario en Windows, que en Mac no serán compa- tibles, por lo que dichos botones tendrán que insertarse desde el propio Mac. Y de esta forma iremos creando y equilibrando un proyecto compatible para ambos sistemas operativos. Muchas gracias por haberme acompañado en esta lectura, nos veremos en una próxima publicación. Otto J González El Autor