0% encontró este documento útil (0 votos)
117 vistas64 páginas

Curso Excel V

VBA en Excel permite automatizar tareas repetitivas como eliminar gráficos o crear reportes personalizados de forma dinámica. Permite ejecutar cálculos complejos de manera sencilla a través de macros y funciones, incrementando la eficiencia al automatizar procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
117 vistas64 páginas

Curso Excel V

VBA en Excel permite automatizar tareas repetitivas como eliminar gráficos o crear reportes personalizados de forma dinámica. Permite ejecutar cálculos complejos de manera sencilla a través de macros y funciones, incrementando la eficiencia al automatizar procesos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

¿Para qué sirve VBA en Excel?

Como es sabido, el uso del programa Excel automatiza la carga de trabajo para la
creación de informes, sin embargo el empleo de macros en Excel mecaniza aún más
las tareas repetitivas que mediante las herramientas y fórmulas de Excel no se logra.
Por ejemplo, podemos crear una macro que me permita eliminar todos los gráficos que
se encuentran en una hoja de cálculo, esto solo se haría de forma manual, lo cual
demoraría cierto tiempo si es hay demasiadas formas, sin embargo si creamos una
macro que permita eliminar todo de uno se reduce el tiempo de manera considerable.

 Creación de reportes a medida

Cada reporte tiene su particularidad, depende del creador del archivo darle la apariencia
más atractiva para otros usuarios, esto con el propósito de generar un informe de fácil
comprensión y detalle. Por ejemplo, a través del visual basic el usuario puede crear
funciones específicas, así también crear tablas dinámicas a través de macros,
igualmente crear un catálogo de imágenes en Excel a través de visual basic, etc. En fin,
infinidad de elementos que se nos brinda para crear un reporte a la medida.

 Dinámico y fácil uso

La comprensión del manejo de macros en Excel es accesible para todos y la


implementación del mismo no es de gran complejidad. Se requiere de capacidad para
investigar y ganas de conocer el sistema. No es como otros programas que requieren
de manuales especializados y ciertos conocimientos previos y más adaptados para
usuarios informáticos. Una vez aprendido lo esencial del sistema se logra gran
dinamismo en la obtención de reportes.

 Ejecución de tareas y cálculos complejos

A través del uso de macros en Excel se logra la ejecución de cálculos complejos de


forma sencilla, esto se puede lograr a través de la creación de funciones. Por ejemplo a
través del UDF se puede crear una función en específico de un rendimiento financiero
a futuro, el cual convertirá una formula compleja y larga en algo más simple.

 Incremento de eficacia y eficiencia

Al automatizar las tareas y reducir el tiempo de espera en la creación de reportes e


informes se logra eficiencia, ya que las tareas repetitivas y mecanizadas que antes eran
realizados por el usuario son ahora ejecutados por el programa. Este tiempo lo podemos
utilizar en otros intereses.

¿Qué es una Macro en Excel?


Las Macros en Excel son un conjuntos de instrucciones que se ejecutan de manera
secuencial por medio de una orden de ejecución, claro está que una Macro puede
invocar a otras, logrando de esta forma obtener operaciones cada vez más complejas.
En el caso de Excel el lenguaje empleado para el uso de Macros es VBA (Visual Basic
para Aplicaciones), Excel cuenta con un "Editor de Visual Basic" o también conocido
como "Editor de VBA" que permite la creación, y/o mantenimiento de las Macros que se
tengan disponibles.

P á g i n a 1 | 67
¿Para qué sirve una Macro en Excel?
Las Macros en Excel son útiles entre otras cosas porque permiten la automatización
de tareas repetitivas, por ejemplo si se da cuenta que todos los días se encuentra
creando la misma tabla dinámica (pero con distintos datos), o colocando el mismo
formato a una hoja, entonces es el momento de automatizar dicha labor por medio de
Macros.

En el siguiente artículo se puede ver más de cerca la utilidad de una macro.

¿Cómo crear una Macro en Excel?


El punto fuerte a favor del uso de Macros, es que es sencillo de aprender a crearlas y
ejecutarlas, crear Macros es simple, y se puede llegar a ahorrar mucho tiempo
remplazando aquellas tareas repetitivas por Macros que usted mismo haya creado, uno
de los primeros pasos para acercarse al uso de Macros puede ser el comenzar a utilizar
el grabador de Macros.

¿Cómo configurar la Ficha Desarrollador?

A fin de poder configurar la Ficha Desarrollador y poder emplearla sin dificultades


podemos seguir los siguientes pasos:

1.- Primero hacemos clic en el triángulo invertido en la parte superior izquierda del
documento de Excel para personalizar la barra de herramientas de acceso rápido.

2.- Luego damos click en la opción: "Más comandos" de la lista desplegable:

P á g i n a 2 | 67
3.-Este nos llevará al cuadro de “Opciones de Excel” y ya en este damos click en la
sección “Personalizar cinta de opciones” y en ella activamos la opción
“Desarrollador” que esta desactivada por default:

4.-Una vez que hemos activado la opción podremos ver la sección de


“DESARROLLADOR” en la cinta de opciones:

5.-Y con ello podemos acceder a las herramientas de macros:

6.-Por otro lado si ya tenemos un documento en macros y queremos abrir el documento


vamos a la opción “Archivo”, en la sección más opciones hacemos click en Centro de
confianza y luego en configuración del Centro de confianza:

7.-Haga clic en configuración de macros y finalmente activamos la opción Habilitar todas


las macros.

P á g i n a 3 | 67
Finalmente podemos trabajar libremente y empezar a crear nuestras macros acorde con
nuestras necesidades.

P á g i n a 4 | 67
Controles de Formulario en Excel

Los controles de formulario en Excel son objetos que podemos colocar dentro de una
hoja de nuestro libro, o dentro de un formulario de usuario en VBA, y nos darán
funcionalidad adicional para interactuar mejor con los usuarios y tener un mejor control
sobre la información.

Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de
una lista predefinida o permitir que el usuario inicie una macro con tan solo pulsar un
botón. Los controles de formulario en Excel se encuentran dentro de la ficha
Programador dentro del grupo Controles. Solamente pulsa el botón Insertar y
observarás cada uno de ellos:

 Controles de formulario. Reconocen fórmulas y funciones de la hoja.


 Controles de ActiveX. Sólo reconocen macros y código VBA.

Resumen de controles de formulario

P á g i n a 5 | 67
Nombre Ejemplo Descripción
del
botón
Etiqueta Identifica el propósito de una
celda o un cuadro de texto, o
muestra texto descriptivo (como
títulos, leyendas, imágenes) o
instrucciones breves.

Cuadro de Agrupa controles relacionados


grupo en una unidad visual en un
rectángulo con una etiqueta
opcional. Generalmente, se
agrupan botones de opción,
casillas de verificación o
contenido estrechamente
relacionado.

Botón Ejecuta una macro que realiza


una acción cuando un usuario
hace clic en él. Los botones
también se conocen como
botones de comando.

Casilla Activa o desactiva un valor que


representa una selección
inequívoca entre opuestos.
Puede seleccionar más de una
casilla en una hoja de cálculo o
en un cuadro de grupo. Una
casilla puede tener uno de tres
estados: activada, desactivada
y mixta, lo que significa una
combinación de los estados
activada y desactivada (como
en una selección múltiple).
Botón de Permite una única elección
opción dentro de un conjunto limitado
de opciones que se excluyen
mutuamente; un botón de
opción generalmente está
contenido en un cuadro de
grupo o un marco. Un botón de
opción puede tener uno de tres
estados: activado, desactivado
y mixto, lo que significa una
combinación de los estados
activado y desactivado (como
en una selección múltiple). Los
botones de opción también se
conocen como botones de
radio.
Cuadro de lista Muestra una lista de uno o más
elementos de texto de entre los
cuales puede elegir el usuario.
Use un cuadro de lista para
mostrar grandes cantidades de
opciones que varían en número
o contenido. Existen tres tipos
de cuadros de lista:

 Un cuadro de lista de selección


única permite solamente una
elección. En este caso, un
cuadro de lista se asemeja a un
grupo de botones de opción, a

P á g i n a 6 | 67
Nombre Ejemplo Descripción
del
botón
excepción de que un cuadro de
lista puede controlar un gran
número de elementos de
manera más eficiente.
 Un cuadro de lista de selección
múltiple permite una elección o
elecciones contiguas
(adyacentes).
 Un cuadro de lista de selección
extendida permite una elección,
elecciones y no contiguas, o
inconexas.

Cuadro Combina un cuadro de texto


combinado con un cuadro de lista para
crear un cuadro de lista
desplegable. Un cuadro
combinado es más compacto
que un cuadro de lista pero
requiere que el usuario haga
clic en la flecha abajo para
mostrar una lista de elementos.
Use un cuadro combinado para
permitir que un usuario escriba
una entrada o elija solamente
un elemento de la lista. El
control muestra el valor actual
en el cuadro de texto, sin
importar el modo en que dicho
valor se haya proporcionado.
Barra de Se desplaza por un intervalo de
desplazamiento valores cuando el usuario hace
clic en las flechas de
desplazamiento o arrastra el
cuadro de desplazamiento.
Además, se puede mover por
una página (en un intervalo
preestablecido) de valores
haciendo clic en el área entre el
cuadro de desplazamiento y
cualquiera de las flechas de
desplazamiento. Generalmente,
el usuario también puede
escribir un valor de texto
directamente en un cuadro de
texto o una celda asociados.
Control de Aumenta o disminuye un valor,
número como un incremento numérico,
una hora o una fecha. Para
incrementar el valor, es
necesario hacer clic en la flecha
arriba; para disminuirlo, se debe
hacer clic en la flecha abajo.
Generalmente, el usuario
también puede escribir un valor
de texto directamente en un
cuadro de texto o una celda
asociados.

Controles ActiveX

Los controles ActiveX pueden usarse en formularios de hoja de cálculo, con o sin el uso
de código VBA, y en formularios del usuario de VBA. En general, use controles ActiveX
cuando necesite requisitos de diseño más flexibles que los proporcionados por los

P á g i n a 7 | 67
controles de formulario. Los controles ActiveX tienen amplias propiedades que puede
usar para personalizar su apariencia, comportamiento, fuentes y demás características.

También puede controlar los diversos eventos que se producen cuando se interactúa
con un control ActiveX. Por ejemplo, puede realizar diferentes acciones, según qué
opción seleccione el usuario en un control de cuadro de lista, o puede consultar una
base de datos para rellenar un cuadro combinado con elementos cuando el usuario hace
clic en un botón. También puede escribir macros que respondan a eventos asociados
con controles ActiveX. Cuando un usuario del formulario interactúa con el control, el
código de VBA se ejecuta para procesar cualquier evento que se produzca para dicho
control.

Resumen de controles ActiveX

Nombr Ejemplo Descripción


e del
botón
Casilla Activa o desactiva un valor que representa una
selección inequívoca entre opuestos. Puede
seleccionar más de una casilla a la vez en una hoja
de cálculo o en un cuadro de grupo. Una casilla
puede tener uno de tres estados: activada,
desactivada y mixta, lo que significa una
combinación de los estados activada y desactivada
(como en una selección múltiple).

Cuadro de Le permite, en un cuadro rectangular, ver, escribir o


texto modificar texto o datos enlazados a una celda. Un
cuadro de texto también puede ser un campo de
texto estático que presenta información de solo
lectura.

Botón de Ejecuta una macro que realiza una acción cuando


comando un usuario hace clic en él. Un botón de comando
también se conoce como un botón de comando.

Botón de Permite una única elección dentro de un conjunto


opción limitado de opciones que se excluyen mutuamente;
generalmente está contenido en un marco o cuadro
de grupo. Un botón de opción puede tener uno de
tres estados: activado, desactivado y mixto, lo que
significa una combinación de los estados activado y
desactivado (como en una selección múltiple). Los
botones de opción también se conocen como
botones de radio.

P á g i n a 8 | 67
Nombr Ejemplo Descripción
e del
botón
Cuadro de Muestra una lista de uno o más elementos de texto
lista de entre los cuales puede elegir el usuario. Use un
cuadro de lista para mostrar grandes cantidades de
opciones que varían en número o contenido. Existen
tres tipos de cuadros de lista:

 Un cuadro de lista de selección única permite


solamente una elección. En este caso, un cuadro de
lista se asemeja a un grupo de botones de opción, a
excepción de que un cuadro de lista puede controlar
un gran número de elementos de manera más
eficiente.
 Un cuadro de lista de selección múltiple permite una
elección o elecciones contiguas (adyacentes).
 Un cuadro de lista de selección extendida permite
una elección, elecciones y no contiguas, o
inconexas.

Cuadro Combina un cuadro de texto con un cuadro de lista


combinado para crear un cuadro de lista desplegable. Un
cuadro combinado es más compacto que un cuadro
de lista pero requiere que el usuario haga clic en la
flecha abajo para mostrar una lista de elementos.
Úselo para permitir que un usuario escriba una
entrada o elija solamente un elemento de la lista. El
control muestra el valor actual en el cuadro de texto,
sin importar el modo en que dicho valor se haya
proporcionado.

Botón de Indica un estado, como Sí/No, o un modo, como


alternancia Activado/Desactivado. El botón alterna entre un
estado habilitado o deshabilitado cuando se hace
clic en él.

Control de Aumenta o disminuye un valor, como un incremento


número numérico, una hora o una fecha. Para incrementar
el valor, es necesario hacer clic en la flecha arriba;
para disminuirlo, se debe hacer clic en la flecha
abajo. Generalmente, el usuario también puede
escribir un valor de texto en un cuadro de texto o
una celda asociados.

Barra de Se desplaza por un intervalo de valores cuando el


desplazamient usuario hace clic en las flechas de desplazamiento o
o arrastra el cuadro de desplazamiento. Además, se
puede mover por una página (en un intervalo
preestablecido) de valores haciendo clic en el área
entre el cuadro de desplazamiento y cualquiera de
las flechas de desplazamiento. Generalmente, el
usuario también puede escribir un valor de texto
directamente en un cuadro de texto o una celda
asociados.

P á g i n a 9 | 67
Nombr Ejemplo Descripción
e del
botón
Etiqueta Identifica el propósito de una celda o un cuadro de
texto, o muestra texto descriptivo (como títulos,
leyendas, imágenes) o breves instrucciones.

Imagen Inserta una imagen, como mapa de bits, JPEG o


GIF.

Control de Un objeto rectangular con una etiqueta opcional que


marco agrupa controles relacionados en una única unidad
visual. Generalmente, se agrupan en un control de
marco los botones de opción, las casillas de
verificación o contenido estrechamente relacionado.

Nota: El control ActiveX Frame no está disponible


en la sección de controles ActiveX del
comando Insertar . No obstante, puede agregarlo
desde el cuadro de diálogo Más
controles seleccionando Microsoft Forms 2.0 Fra
me.
Más controles Muestra una lista de controles ActiveX adicionales
disponibles en el equipo que puede agregar a un
formulario personalizado, como el Control de
calendario 12.0 y el Reproductor de
Windows Media. También puede registrar un control
personalizado en este cuadro de diálogo.

Controles de Formulario no Disponibles en Excel 2010


Los controles de formulario han estado presentes por varias versiones de Excel, sin
embargo a partir de Excel 2010 existen algunos controles que ya no pueden ser
utilizados dentro de las hojas como lo son el Campo de texto, el Cuadro combinado de lista y
el Cuadro combinado desplegable, sin embargo podremos alcanzar funcionalidad similar
utilizando controles ActiveX.

P á g i n a 10 | 67
¿Para qué sirve el editor de Visual Basic?

El editor de Visual Basic sirva para crear, ver y modificar las macros existentes. Esto
incluye a las macros que se han creado por medio del uso del grabador de macros, las
que se han escrito manualmente con el lenguaje de programación de VBA, y permite
verificar que cada línea de programación este correctamente escrita y cumpla su
función.

Partes del Editor de VBA


Sus partes más importantes son las siguientes:

1. Barra de Menú: muestra las opciones clásicas como Archivo, Edición, Ver, etc, así
como las propias de Visual Basic como Depuración, Ejecutar y Complementos.
2. Barra de Herramientas: muestra opciones básicas para el uso habitual, como Guardar,
Cortar, Copiar, Pegar así como las propias del editor como Ejecutar, Interrumpir y
Restablecer Macro, Modo de Diseño, Explorador de Proyectos, Ventana de
Propiedades, Examinador de Objetos y Cuadro de Herramientas.
3. Explorador de Proyectos: permite observar los Libros de Excel Activos en el sistema,
así como el número de Hojas en cada uno de estos y los Módulos de programación
activos.
4. Ventana de Propiedades: muestra las características del objeto activo.
5. Ventana de Trabajo: es el área en donde se codifica la Macros, ya sea escribiendo
manualmente en ella el código de programación o usando del Grabador de Macros
desde la hoja de Excel activa.

¿Cómo acceder al editor de VBA?


Para acceder a dicha función existen dos formas:

 La primera es entrando al por la barra de herramientas ,pestaña programador (Excel


2010), donde se activa con los siguientes pasos:

P á g i n a 11 | 67
 Paso 1: Click izquierdo en la flecha encerrada

 Paso 2: Seleccionar la opción “Más Comandos”, luego seleccionar la opción


“Personalizar Cinta de Opciones”, en la columna “Fichas Principales” seleccionar la
opción “Programador”, luego click en “Aceptar”.

 Paso 3: Aparece la pestaña “Programador”, seleccionar dicha pestaña y buscar el


icono de

“Visual Basic”.

 Paso 4: Finalmente aparecerá el editor de Visual Basic, donde se podrá realizar la

creación de macros personalizada.

 La segunda forma es presionando las teclas “Alt+F11” para acceder directamente a


dicho editor.

P á g i n a 12 | 67
Ejercicio I Formulario

1. Vamos a dibujar el siguiente control de formulario (utilice un cuadro combinado) a la


altura de la celda A8.

2. A su vez contamos con la siguiente tabla de datos:

3. Configure el cuadro combinado Pulsando clic derecho en él y elija la opción


FROMATO DE CONTROL:

 Rango de entrada B2:B5


 Vincular con la celda B8

4. Pulsa clic en el botón <ACEPTAR>

P á g i n a 13 | 67
Ejercicio II Formulario

Hoja Datos:

P á g i n a 14 | 67
Ejercicio III Formulario

Adelanto se incrementa de $5,000 en $5,000. El máximo valor es $30,000

Hoja Datos:

P á g i n a 15 | 67
Cómo grabar Macros en Excel

Si no tienes muchos conocimientos aún sobre VBA pero quieres automatizar algunas
tareas en Excel, puedes crear macros utilizando la Grabadora de macros, lo cual no
requerirá que tengas conocimiento de programación.
Existen dos maneras de iniciar con la grabación de una macro en Excel. Lo podemos
hacer desde la barra de estado y también desde la ficha Programador.

Iniciar la grabación desde la barra de Estado


Para iniciar con la grabación de una macro en Excel puedes pulsar el botón Grabar
macro que se encuentra en la parte inferior izquierda de la barra de estado de Excel.

Iniciar la grabación desde la Ficha Programador

Si tienes activada la ficha Programador entonces podrás también iniciar la grabación de


una macro con el comando Grabar macro que se encuentra dentro del grupo Código.

Cualquiera de los dos métodos mencionados anteriormente hará que se muestre el


cuadro de diálogo Grabar macro donde especificaremos el Nombre de la macro así
como algún Método abreviado que deseemos asignar a la macro.

P á g i n a 16 | 67
Después de pulsar el botón Aceptar, todas las acciones que realices en Excel serán
guardadas como parte de la macro que está siendo grabada.

Detener la grabación de la Macro


Para detener la grabación de la macro debes hacer clic en el comando Detener
grabación que se encuentra en la ficha Programador o también puedes pulsar el botón
que se encontrará en la barra de estado.

Ejecutar una Macro grabada


Podemos ver las macros que hemos grabado con el comando Macros que se encuentra
en la ficha Programador. Al pulsar dicho botón se abrirá el cuadro de diálogo Macros y
deberemos pulsar el botón Ejecutar para iniciar con la ejecución de cada una de las
instrucciones de la macro.

Editar una Macro previamente grabada


La edición de una macro de Excel se puede hacer solamente a través de código VBA.
Para poder editar una macro debes pulsar el botón Macros que se encuentra en la ficha

P á g i n a 17 | 67
Programador y dentro del cuadro de diálogo Macro elegir aquella macro que necesites
editar:

Al pulsar el botón Modificar se abrirá el Editor de Visual Basic con el código de la macro.
Debemos tener mucho cuidado con el código de una macro porque cualquier edición
incorrecta puede impedir el buen funcionamiento de la misma.

Eliminar una Macro


Para eliminar una macro debes pulsar el botón Macros, posteriormente seleccionar la
macro que será eliminada y finalmente pulsar el botón Eliminar.

P á g i n a 18 | 67
Establecer Seguridad de Macros
La seguridad es un tema importante al hablar de macros en Excel. Si abres algún archivo
que contenga una macro maliciosa puedes causar algún tipo de daño al equipo. De
manera predeterminada Excel no permite ejecutar macros automáticamente.

Sin embargo, si estás creando tus propias macros y deseas remover esta protección
porque sabes que no existe código malicioso, entonces puedes modificar la
configuración para habilitar todas las macros. Para hacerlo debes seguir los siguientes
pasos.

Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del cuadro de diálogo
mostrado selecciona la opción Centro de confianza y posteriormente pulsa el
botón Configuración del centro de confianza. Se mostrará el cuadro de diálogo Centro
de confianza.

Dentro de la sección Configuración de macros selecciona alguna de las opciones


disponibles.

 Deshabilitar todas las macros sin notificación. Deshabilita las macros y permite
ejecutar solamente aquellas que estén almacenadas en un lugar confiable. Los
lugares confiables se configuran en la sección Ubicaciones de confianza del
mismo cuadro de diálogo.

 Deshabilitar todas las macros con notificación. Muestra una alerta de seguridad
advirtiendo sobre la intención de ejecutar una macro de manera que se pueda
decidir si se desea ejecutar. Esta es la opción predeterminada de Excel.

 Deshabilitar todas las macros excepto las firmadas digitalmente. Solamente se


podrán ejecutar las macros que están firmadas digitalmente.

 Habilitar todas las macros. Permite ejecutar todas las macros sin enviar alguna
notificación al usuario. Esta opción es útil si se ejecutan múltiples macros

P á g i n a 19 | 67
totalmente confiables. Esta opción es la que corre los mayores riesgos al ejecutar
una macro de una fuente desconocida.

Una vez seleccionada la opción deseada se debe pulsar el botón Aceptar para hacer los
cambios permanentes.

Ejemplo
Para observar los códigos de una macro debemos seguir los pasos:

1. En primer lugar seleccione la celda B5 antes de empezar la grabación de la Macro,


se visualiza:

2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra el cuadro de
Dialogo Grabar Macro:

3. Ingrese un nombre de la macro por ejemplo Saludo

4. En la opción Método Abreviado escriba la letra s, por lo tanto la macro se llamara


con Control + s

5. En Guardar macro en: Seleccione en el lugar en donde desea guardar la macro, por
ejemplo Este libro.

P á g i n a 20 | 67
6. En Descripción puede agregar una descripción de lo que hace la macro, este punto
es opcional. Solo le sirve para que usted recuerde acerca de lo que hace la macro, pues
este código no es interpretado por el compilador.

7. Presione el botón Aceptar. Excel inicia la grabación de la Macro

8. Trasládese a la celda B1 y escriba Hola mundo, después presione Enter para


aceptar el valor en la celda.

9. Pare la grabación de la macro presionando el botón Detener Grabación del grupo


Código. Excel ha grabado los pasos y ha generado un código.

10. Para visualizar el código generado, presione la tecla Alt + la tecla de función F11
(Alt + F11), o de un clic derecho en la hoja de cálculo:

11. Seleccione la opción Ver código. También puede acceder al grupo Código, al dar
clic en la opción Visual Basic

12. Excel nos traslada al Editor de Visual Basic. Se visualiza:

P á g i n a 21 | 67
13. Active los siguientes cuadros o ventanas:

• De clic en el Menú Ver y elija la opción Explorador de Proyectos

• De clic en el Menú Ver y elija la opción Ventana Propiedades

14. Del cuadro Proyecto de doble clic en Módulos o simplemente presione el signo de
+ que aparece en la opción Módulos. Se activara debajo de Módulos la Opción
Modulo1.

15. De doble clic en Modulo1. Se mostrara en el Editor de Visual Basic el código de


la macro que grabamos de la siguiente forma:

16. Que es lo que significa esto nos preguntaremos asombrados, a continuación se da


una explicación de lo que ha hecho Excel:

• Sub y End Sub indican el inicio y el final del procedimiento de la macro saludo

• Todo lo que aparece con un apóstrofe ´ indica que no se tomara en cuenta que
es solo texto o comentarios y ese texto aparece en color verde.

• Range("B1").Select Indica que lo primero que hicimos al grabar la macro fue


trasladarnos a la celda B1. La orden Range nos permite trasladarnos a una
celda.

• ActiveCell.FormulaR1C1 = "Hola mundo" Esto indica que se escribirá en la


celda en que se encuentra el valor de texto Hola mundo. Todo lo que aparece
entre comillas siempre será un valor de texto. La orden

ActiveCell.FormulaR1C1 nos permite escribir un valor en la celda activa. Para


comprender alteraremos el código dentro del editor de Visual Basic.

P á g i n a 22 | 67
17. Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s
hará lo siguiente:

En B1 escribirá Hola mundo

En C1 escribirá Bienvenidos al curso de Excel

Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará

En B1 escribirá Hola mundo

En C1 escribirá Bienvenidos al seminario de Excel.

Se visualiza:

Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará:

En B1 escribirá Hola mundo.

En C1 escribirá Bienvenidos al seminario de Excel.

P á g i n a 23 | 67
Adicionar un botón en la hoja Excel para ejecutar la macro

Practica
Genera las siguientes Macros:

 Grabe una Macro que se active con Control + b y que esta macro permita abrir
un archivo.

 Grabe una Macro que inserte una tabla con datos.

 Grabe una Macro que abra un archivo existente.

 Grabe una Macro que abra un nuevo archivo.

 Grabe una Macro que inserte un logotipo.

 Grabe una Macro que ordene alfabéticamente una lista de nombres.

 Grabe una Macro que imprima un formulario.

P á g i n a 24 | 67
Códigos más Comunes

Trasladarse a una Celda

Range("A1").Select

Escribir en una Celda

Activecell.FormulaR1C1="Paty Acosta"

Letra Negrita

Selection.Font.Bold = True

Letra Cursiva

Selection.Font.Italic = True

Letra Subrayada

Selection.Font.Underline = xlUnderlineStyleSingle

Centrar Texto

With Selection .HorizontalAlignment = xlCenter End With

Alinear a la izquierda

With Selection .HorizontalAlignment = xlLeft End With

Alinear a la Derecha

With Selection

.HorizontalAlignment = xlRight

End With

Tipo de Letra(Fuente)

With Selection .Font

.Name = "AGaramond"

End With

Tamaño de Letra (Tamaño de Fuente)

With Selection.Font .Size = 15 End With

Copiar

Selection.Copy

P á g i n a 25 | 67
Pegar

ActiveSheet.Paste

Cortar

Selection.Cut

Ordenar Ascendente

Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _


OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Orden Descendente

Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _


OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Buscar

Cells.Find(What:="Paty Acosta", After:=ActiveCell, LookIn:=xlFormulas, LookAt


_ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

Insertar Fila

Selection.EntireRow.Insert

Eliminar Fila

Selection.EntireRow.Delete

Insertar Columna

Selection.EntireColumn.Insert

Eliminar Columna

Selection.EntireColumn.Delete

Abrir un Libro

Workbooks.Open Filename:="C:\Mis documentos\miarchivo.xls"

Grabar un Libro

ActiveWorkbook.SaveAs Filename:="C:\Mis documentos\tauro.xls", FileFormat _


:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False

P á g i n a 26 | 67
Formularios en VBA

Los formularios en VBA no son más que un cuadro de diálogo de Excel donde
podremos colocar controles que nos ayudarán a solicitar información del usuario.
Podremos colocar cajas de texto, etiquetas, cuadros combinados, botones de comando,
etc.

Crear un Formulario en Excel


Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos
seleccionar la opción de menú Insertar y posteriormente la opción UserForm.

Inmediatamente se mostrar un formulario en blanco y de igual manera podrás observar


el Cuadro de herramientas:

Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro


de herramientas.

P á g i n a 27 | 67
Agregar Controles al Formulario
Para agregar un control al formulario debes seleccionarlo del Cuadro de herramientas
y dibujarlo sobre el formulario. En mi formulario he agregado etiquetas y cuadros de
texto así como un par de botones de comando:

El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este
cambio solamente selecciona el control y se mostrará la ventana de Propiedades donde
podrás hacer la modificación. De igual manera el texto desplegado en los botones de
comando se modifica en su propiedad Caption.

Código para el Botón Cancelar


El botón cancelar cerrará el formulario sin guardar la información capturada en ningún
lugar. El código que debemos utilizar es el siguiente:

Private Sub CommandButton2_Click()


Unload Me
End Sub

Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload
Me” cerrará el formulario.

Código para el Botón Aceptar


A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de
texto en las celdas A1, B1 y C1. El código utilizado es el siguiente:

Private Sub CommandButton1_Click()

Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value
Worksheets("Hoja1").Range("B1").Value = Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value = Me.TextBox3.Value

End Sub

Al pulsar el botón Aceptar se transferirán los valores de los controles TextBox hacia las
celdas de la Hoja1.

P á g i n a 28 | 67
Botón para abrir Formulario
Para facilitar la apertura del formulario puedes colocar un botón ActiveX en la hoja con
el siguiente código:

Private Sub CommandButton1_Click()


UserForm1.Show
End Sub

Probar el Formulario
Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:

Propiedades comunes de UserForms y Controles

En este capítulo de nuestro Curso de VBA y macros en Excel, seguiremos


continuaremos con el ya solicitado tema de Formulario. Veremos en esta ocasión el
tema de las propiedades más comunes usadas en UserForms y Controles Activex.
Las siguientes propiedades pueden ser usadas modificadas directamente desde
la Ventana Propiedades y modificándolas desde VBA. A continuación, una lista de
propiedades comunes, aunque aclaro, existen muchas más:

 Name.
 Caption.
 Accelerator.
 Value.
 Enabled.
 Visible.
 TabIndex.
 Height.
 Width.

P á g i n a 29 | 67
Propiedad Name
Esta propiedad nos permite identificar a los controles para poder manipularlos
desde VBA. Cada control tiene un nombre predefinido, como por ejemplo un Cuadro
de texto tendrá el nombre TextBox1, pero nosotros lo podemos cambiar
a txtNombre o el nombre que deseemos, aunque se sugiere que sea descriptivo acerca
de la función que tendrá el control.

Figura 1. Propiedad Name en Controles ActiveX y Formularios VBA.

En el siguiente ejemplo mostramos el contenido del TextBox1.

Private Sub UserForm_Initialize()

MsgBox Me.txtNombre.Value

End Sub

Propiedad Caption
Con esta propiedad haremos referencia al título o etiqueta que tendrá un Control.
Desde un UserForm, pasando por un TextBox, la mayoría de los controles tienen
un Caption, que será el texto que se mostrará en cada Control.

P á g i n a 30 | 67
Figura 2. Propiedad Caption en UserForm VBA.

En la siguiente línea modificaremos el título de la venta del UserForm.

Private Sub UserForm_Initialize()

Me.Caption = "EXCEL_AVANZADO"

End Sub

Propiedad Accelerator
Usaremos la propiedad Accelerator cuando deseemos activar un Control o ejecutar
un procedimiento que tenga asociado a su evento Click. Si por ejemplo tenemos un
botón con el Caption “Prueba” y le asignamos la letra P como tecla aceleradora,
cada que presionemos en nuestro teclado la combinación Alt + P, se activará o
ejecutará una macro asociada a ese control.
Noten en la siguiente imagen que la letra P se subraya para identificar la letra
aceleradora.

Figura 3. Propiedad Accelerator en CommandButton en Formulario VBA.

P á g i n a 31 | 67
Propiedad Value
Algunos Controles permiten guardar valores, como por ejemplo TextBox o
ComboBox. La propiedad Value nos permitirá guardar un valor para después volcarlo
en alguna celda, otro Control o usarlo para algún cálculo.
Por ejemplo, los valores de un CheckBox son TRUE o FALSE.

Propiedad Enabled
En ocasiones vamos a necesitar inhabilitar controles, en base al contenido de otro
control o como medida validación para seguir pasos al capturar valores. Para lo anterior,
usaremos la propiedad Enabled, que será TRUE en caso de que
deseemos habilitar un Control o FALSE para inhabilitarlo.

Figura 4. Propiedad Enabled para inhabilitara controles en UserForms con VBA.

Propiedad Visible
Con esta propiedad tendremos controles ocultos y mostrarlos en base a una
condición. Si Visible es TRUE el control se muestra y con FALSE se oculta.

P á g i n a 32 | 67
Figura 5. Propiedad Visible para mostrar controles en Formulario VBA.

Private Sub CheckBox1_Click()

If Me.CheckBox1.Value = True Then


Me.OptionButton1.Visible = False
ElseIf Me.CheckBox1.Value = False Then
Me.OptionButton1.Visible = True
End If

End Sub

Propiedad TabIndex
La propiedad TabIndex nos ayudará a tener un orden de activación de controles, es
decir, al presionar la tecla Tabulador iremos activando o dándole foco a los
controles. El índice menor es 0 y el mayor dependerá de los controles que
tengamos en el Formulario.

Propiedad Height
Con esta propiedad vamos a modificar y manipular el alto de un Formulario o un
Control.

Propiedad Width
Con esta propiedad vamos a modificar y manipular el ancho de un Formulario o
Control.

P á g i n a 33 | 67
Tipos de variables en VBA

En VBA existen una gran cantidad de variables. Aquí repasaremos los principales tipos
y su alcance.

Principales Tipos de Variables en VBA

Tipo Entero
Para una variable numérica de valores de -32768 a 32767.
Para ello usaremos el código

Dim NombreVariable as Integer

Si tenemos almacenado un valor con algún tipo de variable que no sea de tipo Integer
podremos convertirlo a Integer mediante el comando CInt. En la siguiente línea podemos
ver el uso de este comando con un ejemplo sencillo.

Sub Convertir_a_integer()
n = 9.56
MsgBox CInt(n)
End Sub

El mensaje en pantalla devolverá el valor de 10, es decir, el redondeo del valor de la


variable n.

Tipo Long
El tipo long de variable es para valores enteros positivos o negativos pero con la
diferencia de que puede almacenar valores mucho mayores, en concreto entre -
2.147.483.648 y 2.147.483.648. La sintaxis de este tipo de variables es:

Dim NombreVariable as Long

Si queremos convertir un valor a tipo Long usaremos el método CLng(). En el ejemplo


siguiente, vamos a convertir un número decimal muy grande en una variable tipo Long.

Sub Convertir_a_Long()
n = 100000000.53
MsgBox CLng(n)
End Sub

Tipo Single
Para almacenar valores numéricos decimales aunque si requerimos una mayor
precisión, usaremos variables tipo Double.
El código para declarar variables tipo Single es:

Dim NombreVariable as Single

P á g i n a 34 | 67
Si, como en los casos anteriores, queremos convertir una variable a tipo Single
usaremos el método CSng() como vemos en el siguiente ejemplo:

Sub Convertir_a_Single()
n = 120.534253231
MsgBox CSng(n)
End Sub

Tipo String
Para almacenar valores de cadenas de texto, es decir, uniones de cualquier tipo de
caracter ya sea numérico o no numérico.
El código para declarar este tipo de variables es:

Dim NombreVariable as String

Para asignar el valor a este tipo de variables deberemos poner la cadena de texto (o de
los caracteres que sean) entre comillas como puede verse en el siguiente ejemplo:

Sub Ejemplo()
Dim Nombre_pais As String
Nombre_pais= "Brasil"
End Sub

Si tenemos un valor que no es tipo String, podremos convertirlo mediante el métido


CStr() como puede verse en el siguiente ejemplo en el que la variable n almacena un
número.

Sub Convertir_a_String()
Dim st As String
n = 53
st = CStr(n)
End Sub

El resultado del código anterior guardará en la variable st el valor de 53 como tipo String.

Tipo Verdadero o Falso


Nos permite almacenar valores de variables del tipo verdadero o falso.
El código para su declaración es:

Dim NombreVariable as Boolean

Tipo Variant
Este tipo nos permite almacenar cualquier tipo de información ya sea numérica, de texto
o del tipo verdadero o falso o cualquier otro que se nos ocurra. En definitiva, cuando no
sabemos qué tipo de variable va a tener usaremos el tipo Variant, donde entran todos
los tipos posibles. El inconveniente es que ocupa una gran cantidad de memoria.
El código para su declaración es:

Dim NombreVariable as Variant

P á g i n a 35 | 67
Estos son los tipos de variables que usaremos con más frecuencia. Hay otro tipo de
variables como los de fecha y hora pero no son tan comúnmente usados.

La declaración IF-THEN en VBA

En ocasiones necesitamos ejecutar algunas líneas de código de nuestra macro


solamente cuando alguna condición se haya cumplido. La declaración If-Then nos
permite validar una condición para tomar una decisión adecuada.
La sentencia If-Then en VBA es la más básica de todas las declaraciones de control de
flujo que son aquellas declaraciones que nos permiten tomar decisiones en base a una
condición. Esta declaración la podemos traducir como Si-Entonces y la utilizaremos en
situaciones donde necesitamos realizar la siguiente evaluación: Si se cumple la
condición Entonces haz esto.

Ejemplo de la declaración IF-THEN


Para probar el funcionamiento de la declaración If-Then inserta un botón de comando
(Control ActiveX) en una hoja de Excel y haz doble clic sobre él para colocar el siguiente
código:

 En el primer paso se hace la declaración de las variables que utilizaré en el resto


del código.
 En el segundo paso asigno el valor de la celda A1 a la variable calificación.
 El tercer paso contiene la declaración If-Then y que prueba Si el valor de la
variable calificación es mayor o igual a 60. En caso de ser
verdadero Entonces se asigna el valor “Aprobado” a la variable resultado.
 El último paso es asignar el valor de la variable resultado a la celda B2.

Ahora observa el resultado al ejecutar esta macro.

P á g i n a 36 | 67
La declaración IF-THEN-ELSE
Parece que todo funciona muy bien en el código anterior pero aún lo podemos mejorar
agregando la declaración Else de manera que tengamos una declaración de la forma If-
Then-Else. Esta variante nos permite hacer la siguiente evaluación: Si se cumple la
condición Entonces haz esto De lo contrario haz otra cosa.
La declaración Else en VBA nos permite indicar otro bloque de instrucciones que se
deben ejecutar en caso de que la condición sea falsa. De esta manera podemos tomar
una acción determinada en caso de que la condición se cumpla o en caso de que no se
cumpla. Ahora modificaré el ejemplo anterior para asegurarme de que en caso de que
la condición de calificación mayor o igual a 60 no se cumpla se despliegue el resultado
“reprobado”. Observa el siguiente código.

En el tercer paso puedes observar la declaración If-Then-Else. Ahora observa el efecto


de este cambio al momento de ejecutar el código:

Por último quiero que observes que en este segundo ejemplo la declaración If-Then-
Else termina con la declaración End If. Siempre que utilicemos la declaración If-Then o
la declaración If-Then-Else debemos terminar con End If.

La única ocasión donde no se termina con End If es cuando la declaración If-Then se


puede colocar en una sola línea como es el caso del primer ejemplo de este artículo.

El Bucle FOR-NEXT en VBA


En términos de programación, un bucle es una instrucción que nos permitirá ejecutar
repetidamente un conjunto de instrucciones hasta que se cumpla la condición que
hayamos especificado. Los bucles también son conocidos como ciclos.

P á g i n a 37 | 67
Sintaxis
El bucle FOR NEXT en VBA nos permite en Excel (o cualquier otro lenguaje de
programación) repetir una acción un número de veces dado. Su sintaxis es la siguiente:

For CONTADOR = COMIENZO To FINAL [Step VALOR_DE_PASO]


‘código
[Exit For]
‘código
Next

Donde:
CONTADOR: es la variable numérica de control del bucle
COMIENZO: es el valor numérico donde comenzará el CONTADOR. Es un
número entero.
FINAL: es el valor numérico hasta donde contará el CONTADOR.
Step VALOR_DE_PASO: opcional. Valor numérico que irá sumándose al
CONTADOR a lo largo del bucle. Es un número natural.
‘código: es el código de la expresión que queremos que se ejecute dentro del
bucle todas las veces.
Exit For: sentencia opcional que nos permite salir del bucle y continuar la macro
a partir del NEXT final sin necesidad de haber recorrido el bucle completamente.

Ejemplo de un Bucle FOR-NEXT


A continuación un ejemplo muy sencillo de un bucle For-Next donde la única instrucción
que se repite es la de mostrar una ventana de diálogo con el valor de la variable i:

Con este bucle provocaremos que se muestre una ventana de diálogo 5 veces y en cada
una de ellas se mostrará el valor actual de la variable i que comenzará con 1 y terminará
con 5. Observa el resultado:

P á g i n a 38 | 67
Ya que la variable i comienza con el valor 1, el primer cuadro de diálogo muestra el
mensaje “i = 1”, después “i = 2” y así sucesivamente hasta llegar al límite. El bucle For-
Next en VBA nos ayudará a crear ciclos que ejecutarán un conjunto de instrucciones
hasta alcanzar el límite que hayamos especificado.

El Bucle Do While en VBA


En programación en general y el VBA en particular los bucles son métodos muy
utilizados.

Sintaxis y funcionamiento
El funcionamiento del bucle Do While en VBA es muy sencillo, repetiremos una acción
tantas veces que sea necesario siempre y cuando se evalúe una condición. Por ejemplo,
iremos avanzando a lo largo de una columna por todas sus celdas e iremos sombreando
en amarillo hasta que una celda sea mayor que un valor dado.
La sintaxis puede resultar un poco compleja inicialmente, pero una vez que veamos
algunos ejemplos quedará perfectamente. La sintaxis se compone de las siguientes
partes:

Do While Mi_expresion

[Nuestro código 1]

[Exit Do]

[Nuestro código 2]
Loop

o también de la forma

Do
[Nuestro código 1]

[Exit Do]

[Nuestro código 2]

Loop While Mi_expresion

Donde en el primer caso evaluaremos inicialmente la expresión que queremos del tipo
verdadero o falso y en el segundo caso lo evaluaremos después. Esto nos permitirá
jugar un poco con el bucle.

Recordemos que:
 Lo que esté en corches no es fundamental
 Mi_expresión: es una condición lógica que devuelve verdadero o falso. Si se
evalúa como verdadero el bucle continuará, sino, se terminará.
 Exit Do: nos permitirá salir del bucle en cualquier momento dada una condición
(por ejemplo si hemos repetido el bucle mil veces)
 Nuestro código 1 o 2: este será el código que ejecutemos dentro del bucle.
Puede ponerse antes, después o en ambas posiciones respecto del Exit Do.

P á g i n a 39 | 67
Sub ColorearTipos()

Range("A5").Select

Do While ActiveCell.Value <> ""

If VBA.IsNumeric(ActiveCell.Value) Then Exit Do

With ActiveCell.Interior
Select Case ActiveCell.Value
Case "A"
.ColorIndex = 50
Case "D"
.ColorIndex = 2
Case "V"
.ColorIndex = 3
Case "F"
.ColorIndex = 46
Case Else
.ColorIndex = xlNone
End Select
End With

ActiveCell.Offset(1, 0).Select

Loop

End Sub

P á g i n a 40 | 67
Funciones en VBA
Las siguientes Funciones en VBA o Macros podrían ser de mucha ayuda para las
diversas tareas en las que nos veamos involucrados en resolver, en esta relación
tenemos un acercamiento a las funciones en VBA más usuales que podríamos llegar a
emplear.

A la fecha en la web no encontramos una relación lo suficientemente exhaustiva de las


funciones en VBA disponibles así que desde el blog hemos comenzado, paso a paso, a
establecer nuestra propia relación de funciones, prestando especial interés a los
ejemplos de uso de cada función que desarrollemos, si desean que agreguemos alguna
en particular o han encontrado alguna observación sobre algunas de las funciones
descritas, por favor avísennos por medio de sus comentarios fin de realizar las
revisiones y adecuaciones que sean necesarias.

Debe tenerse en cuenta que estas funciones en VBA pueden emplearse desde cualquier
parte del proyecto, es decir ya sea desde los módulos, hojas, ThisWorkbook, y
formularios.

Tipos de Funciones en VBA


La siguiente clasificación de la las Funciones en VBA se basa en el propósito de las
funciones, y los tipos datos que están involucrados en estas funciones.

 Funciones de Cadena en VBA


 Funciones Matemáticas en VBA
 Funciones de Fecha y Hora en VBA
 Funciones de Información en VBA
 Funciones de Conversión en VBA
 Funciones de Archivo en VBA

Todas las Funciones en VBA


1. Nombre propio en VBA
2. Función DatePart en VBA
3. Función Split String
4. ¿Qué es un inputbox?
5. Funciones de Fecha
6. Función NumberFormat
7. Función Worksheetfunction.IsNonText
8. Función StrReverse en VBA
9. Función Minute VBA
10. Función String en VBA
11. Función Year en VBA
12. Función UBound en VBA
13. Función TimeValue en VBA
14. Función CSNG en VBA
15. Función Split
16. Función StrComp
17. Funcion SWITCH en VBA
18. Función FormatDateTime en VBA
19. Función Second en VBA

P á g i n a 41 | 67
20. Función WeekDay en VBA
21. Función Timer en VBA
22. Función ISERROR
23. Función FILEDATETIME
24. Aplicar Trim a un rango de celdas con Macros
25. 5 Funciones en VBA imprescindibles
26. Función MonthName
27. Función MKDIR
28. Función RGB en VBA
29. Función HOUR
30. Función GETATTR
31. Función RTRIM
32. Función ChDir
33. Evaluacion del dia con la Función Day
34. Función Month en VBA
35. Función Right en VBA
36. Función CINT
37. Función Mid para calificación crediticia
38. Función Abs
39. Función Now en VBA
40. Función Formatpercent
41. Función DateAdd (Teoría Nagele)
42. Función FileLen en VBA
43. Función IsEmpty en VBA
44. Función Len en VBA
45. Función Left
46. Función Space en BVA
47. Función Rnd
48. Funcion IsNumeric
49. Función FormatCurrency en VBA
50. Función IsNull en VBA
51. Función Cbyte en VBA
52. Función StrConv
53. Función Replace
54. Función Val en VBA
55. Función CLng en VBA
56. Función Cdec
57. Función Choose en VBA
58. Función CStr
59. Función CurDir
60. Función CVAR en VBA
61. Función InputBox en VBA
62. Función CCur en VBA
63. Función DateSerial en VBA
64. Función WeekdayName
65. Función LCase con VBA
66. Función ROUND
67. Función Sgn
68. Función Date
69. Función INT
70. Función DateDiff
71. Función CDate con VBA

P á g i n a 42 | 67
72. Función Fix con VBA
73. Función LTrim
74. Función CHR
75. Función DateSerial
76. Funcion Cbool
77. Función TimeSerial
78. Funcion Ucase
79. Función InStr
80. Función Format
81. Función CDbl
82. Función IsDate
83. Función Asc
84. Función InStrRev

¿Qué es un inputbox?
El Inputbox nos ofrece una entrada para un determinado dato colocado por el usuario.
Se divide de manera visual en dos partes, la parte superior del Inputbox se muestra un
mensaje para el usuario, y en la parte inferior hay una caja de texto en donde el usuario
podrá agregar un valor. Esta función se escribe: Inputbox (Prompt, Title, Default).

Como se muestra en la imagen, hay tres parámetros principales:

a) Prompt: especifica la leyenda que mostrará la caja de mensajes


b) Title: es el título que llevará el cuadro de diálogo
c) Default: es el texto que mostrará la caja de texto.

Entre las ventajas tenemos que el InputBox nos permite desarrollar una tarea específica
dependiendo del valor brindado por el usuario.
Una vez que conocemos las partes del InputBox, detallaremos algunos ejemplos de esta
función.

Ejemplo 1.

Primero: solicitar varios nombres usando Inputbox. Para ello, copiaremos la siguiente
indicación.

Sub Ejemplo1 ()

Dim x As String
Dim y As Integer
Range ("A1").Select
For y = 0 To 5
x= (InputBox("Ingrese su nombre"),"Nombre")

P á g i n a 43 | 67
ActiveCell.Offset(y,0).Value = x
Next

End Sub

Como se muestra en las imágenes anteriores, el usuario podrá digitar el nombre en la


caja de texto y al dar aceptar se colocará en la celda que se especifica en la instrucción.

Función ISNUMERIC
IsNumeric es una función utilizada en Visual Basic, la cual nos sirve para evaluar si una
expresión es numérica o no. Asimismo, si la expresión es numérica la función retornará
el valor True (Verdadero), de lo contrario devolverá el valor False (Falso). Cabe
mencionar, que esta función toma como valor numérico, ya sea a números enteros como
a decimales.

Private Sub CommandButton1_Click()

If IsNumeric(TextBox1.Text) Then
MsgBox (TextBox1.Text & ": Es un valor numérico")
Else
MsgBox (TextBox1.Text & " :No es un valor numérico")
End If

End Sub

Función CStr
La función CStr se utiliza para convertir un valor numérico en un tipo String:

Sintaxis
CStr (expresión)

Nota.- El argumento expresión es cualquier expresión válida.

Su expresión es: CStr devuelve

Una cadena que contiene una fecha en el


Date formato de fecha corto de su sistema.

Otro numérico Una cadena que contiene el número.

P á g i n a 44 | 67
Se utilisa CStr para forzar el resultado que se va a expresar como String.

Sub NELLYFuncionCStr ()

'El siguiente ejemplo utiliza la función CStr para convertir un valor numérico y la
fecha en un tipo String:

Dim Mivalor1, MiCadena, MiFecha1, MiCadena2

Mivalor1 = 5438.324 ' Mivalor es de tipo numérico.

MiFecha1 = "11/3/12" ' Mivalor es fecha

MiCadena = CStr(Mivalor1) ' MiCadena contiene "5438.324".

MiCadena2 = CStr(#11/3/2012#) ' Micadena2 contiene "11/03/2012"

MsgBox "Mi Valor " & (MiCadena) & " y Mi Fecha " & (MiCadena2)

End Sub

Cuadro Combinado en VBA


Excel tiene un control ActiveX conocido como Cuadro combinado el cual también es
llamado comúnmente por su nombre en inglés: Combo Box. Este control nos permite
crear listas desplegables en nuestros formularios.

Para insertar un Cuadro combinado debemos ir a la ficha Programador y dentro del


botón Insertar pulsar el comando Cuadro combinado (control ActiveX):

Después de dibujar el Cuadro combinado tendrás un resultado como el siguiente:

P á g i n a 45 | 67
Agregar elementos al Cuadro Combinado
Si quiero que el Cuadro combinado muestre los valores del rango A1:A5, puedo utilizar
la propiedad ListFillRange donde puedo indicar este rango:

Como resultado obtendré los valores de las celdas como elementos del Cuadro
combinado:

Diferencia con el Cuadro de Lista


Una diferencia importante entre el Cuadro combinado y el cuadro de lista es que el
primero permite que el usuario capture una opción diferente a las mostradas en la lista.
En el ejemplo anterior no aparecía el día domingo como parte de los elementos, sin
embargo puedo capturar el día domingo dentro del cuadro de lista.

P á g i n a 46 | 67
Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:
Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado

Utilizar el Cuadro combinado pero validar la opción seleccionada con código VBA de
manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un
ejemplo de código de validación es el siguiente:

Asociar una celda al Cuadro Combinado


Al igual que con otros controles ActiveX, podemos asocias una celda al cuadro
combinado de manera que muestre el elemento de la lista que haya sido seleccionado.
Esta configuración la hacemos en la propiedad LinkedCell:

Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en


la celda indicada en la propiedad LinkedCell:

P á g i n a 47 | 67
Cajas de combo dependientes de Excel VBA

A continuación veremos un programa en Excel VBA que crea un formulario de usuario


que contiene cuadros combinados dependientes. El formulario de usuario que vamos
a crear se ve de la siguiente manera:

El usuario selecciona Animales de una lista desplegable. Como resultado, el usuario


puede seleccionar un animal de una segunda lista desplegable.

El usuario selecciona Deportes de una lista desplegable. Como resultado, el usuario


puede seleccionar un deporte de una segunda lista desplegable.

Para crear este formulario de usuario, ejecute los siguientes pasos.

1. Abra el Editor de Visual Basic. Si el Explorador de proyectos no está visible, haga clic
en Ver, Explorador de proyectos.

P á g i n a 48 | 67
2. Haga clic en Insertar, formulario de usuario. Si el Cuadro de herramientas no aparece
automáticamente, haga clic en Ver, Cuadro de herramientas. Su pantalla debe
configurarse como se muestra abajo.

3. Agregue los cuadros combinados (primero a la izquierda, el segundo a la derecha) y


el botón de comando. Una vez que se haya completado, el resultado debe ser
consistente con la imagen del formulario de usuario que se mostró anteriormente. Por
ejemplo, cree un control de cuadro combinado haciendo clic en ComboBox en el Cuadro
de herramientas. A continuación, puede arrastrar un cuadro combinado en el formulario
de usuario.

4. Puede cambiar los nombres y las leyendas de los controles. Los nombres se utilizan
en el código de Excel VBA. Los subtítulos son aquellos que aparecen en tu pantalla. Es
una buena práctica cambiar los nombres de los controles, pero no es necesario aquí
porque solo tenemos algunos controles en este ejemplo. Para cambiar el título del
formulario de usuario y el botón de comando, haga clic en Ver, Ventana de propiedades
y haga clic en cada control.

5. Para mostrar el formulario de usuario, coloque un botón de comando en su hoja de


trabajo y agregue la siguiente línea de código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ahora vamos a crear el Sub UserForm_Initialize. Cuando use el método Mostrar para
el formulario de usuario, este sub se ejecutará automáticamente.

6. Abra el Editor de Visual Basic.

7. En el Explorador de proyectos, haga clic con el botón derecho en UserForm1 y luego


haga clic en Ver código.

8. Elija Userform en la lista desplegable de la izquierda. Elija Inicializar de la lista


desplegable de la derecha.

9. Agregue las siguientes líneas de código:

P á g i n a 49 | 67
Private Sub UserForm_Initialize()

With ComboBox1
.AddItem "Animals"
.AddItem "Sports"
.AddItem "Food"
End With

End Sub

Explicación: estas líneas de código llenan el primer cuadro combinado.

Ahora hemos creado la primera parte del formulario de usuario. Aunque ya se ve limpio,
no sucederá nada cuando seleccionemos un elemento del primer cuadro combinado.

10. En el Explorador de proyectos, haga doble clic en UserForm1.

11. Haga doble clic en el primer cuadro combinado.

12. Agregue las siguientes líneas de código:

Private Sub ComboBox1_Change()

Dim index As Integer


index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index


Case Is = 0
With ComboBox2
.AddItem "Dog"
.AddItem "Cat"
.AddItem "Horse"
End With
Case Is = 1
With ComboBox2
.AddItem "Tennis"
.AddItem "Swimming"
.AddItem "Basketball"
End With
Case Is = 2
With ComboBox2
.AddItem "Pancakes"
.AddItem "Pizza"
.AddItem "Chinese"
End With
End Select

End Sub

Explicación: Excel VBA utiliza el valor del índice variable para probar cada declaración
de Caso subsiguiente para ver con qué elementos se debe llenar el segundo cuadro

P á g i n a 50 | 67
combinado. Diríjase a nuestro programa Select Case para obtener más información
sobre la estructura de Select Case.

13. Haga doble clic en el botón Importar.

14. Agregue la siguiente línea de código:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub
Resultado:

P á g i n a 51 | 67
Uppercase y Lowercase en VBA

El equivalente a la función UPPER disponible en varios lenguajes es la Función UCASE


en VBA.

La función UCASE convierte una cadena de caracteres, mayúscula o minúscula, a


mayúsculas; en cambio, la Función LCASE en VBA nos devuelve una cadena, sean
mayúscula o minúscula, en solo minúsculas.
Las cadenas pueden ser alfabéticas o no alfabéticas. Esta función utiliza cadenas de
tipo Sting o Char, por lo que en necesario ingresar la cadena dentro de comillas.

Pasos para cambiar a Mayúsculas


UCASE: La sintaxis a utilizar es la siguiente: Ucase ("texto"), donde:
Texto= cadena de caracteres que se quiere convertir a mayúsculas

La función UCASE te devuelve el texto convertido en mayúsculas. Ejemplo:


Ucase ("Alfabeto")
Resultado: ALFABETO

Pasos para cambiar a Minúsculas


De la misma manera para la función LCase; se siguen los mismos casos para la función
Ucase pero con la diferencia de que la función Lcase te devolverá la cadena en
minúsculas. Ejemplo:
LCase ("EQUIPO")
Resultado: equipo

Ejemplos
Algunos ejemplos se muestran a continuación:
1. Convertir el texto de la celda A1 a mayúsculas en la celda B1
• Se escribe la función Ucase en un módulo (desde el editor de visual basic)

• Finalmente, se obtiene el texto en mayúscula

2. Convertir el texto de la celda A2 a mayúsculas en la celda B2


• Se escribe la función Lcase en un módulo

P á g i n a 52 | 67
• Se obtiene el texto en minúscula

Código con la función MsgBox

Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)


If Continuar = vbNo Then Exit Sub

P á g i n a 53 | 67
Identificar la última fila en uso con VBA
¿En qué nos ayudaría identificar la última fila en uso?
Usualmente las bases de datos en Excel tienen mucha información; por
eso, perderíamos tiempo buscando el último dato con la barra de desplazamiento.
Sin embargo, esto se puede solucionar, haciendo uso de las macros.

¿Qué código podemos usar para buscar la última fila?

Sub BuscarUltimaFila()

Dim ult As Integer


ult = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox ult

End Sub

Ahora entendamos el código:

Cells(Rows.Count,1) = Al usar Rows.Count estamos contando todas las filas


disponibles en Excel cuyo valor seria 1048576. Como lo usamos en un Cells, estaremos
seleccionando la fila 1048576. El "1" indica la columna en la cual se está trabajando
("A").
End(xlUp) = Estamos indicando que desde la fila indicada (1048576), "suba" hasta que
encuentre un valor.
Row = Indicamos que grabe el número de la fila ocupada encontrada.
MsgBox ult = Mostramos ese valor en un cuadro de texto.

Seleccionar la última fila en VBA


Ahora, si queremos seleccionar esa celda podemos agregar el siguiente código:

Sub BuscarUltimaFila()

Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Select

End Sub

Como podemos observar, en vez de .Row , le ponemos .Select

Última fila libre en VBA


Alternativamente, si queremos buscar la última fila libre, haremos uso del Offset:

Sub BuscarUltimaFila()

Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Select

End Sub

P á g i n a 54 | 67
Con Offset(1,0) , al encontrar la última fila en uso, saltamos 1 fila más la cual sería la
última fila libre.

Ejemplo I: Formulario de Proveedores

Crear una hoja Excel con los siguientes datos:


Producto/Ser Contacto Fecha de
Nº Razón Social RUC Dirección Actividad Teléfono E-mail
vicio Comercial Ingreso
Imprenta 20348957 Av. Javier Prado Este 3459 Impresiones clopez@imprentgr
1 Servicio Carmen Lopez 3450875 12/05/2013
Gráfica SA 690 San Borja varias af.com
Office One 10034558 Av Comandante Espinar 495 [email protected]
2 Producto Útiles de oficina Javier Peña 2342020 15/01/2014
SAC 933 Miraflores m
Bonavista 20458293 Fiorella [email protected]
3 Jr Piura 345 Miraflores Servicio Filtros de agua 2402880 30/06/2012
SAC 841 Jimenez m
Telefónica 20459680 marianat@telefoni
4 Av Arequipa, 2340 Lima Servicio Telefonía Mariana Trejo 5424390 1/10/2000
del Perú SA 201 ca.com.pe
Zarmissa 10034569 Productos de jorgegrillo@gmail.
5 Jr Liberta 333 Magdalena Producto Jorge Grillo 2340293 24/11/2012
EIRL 301 Limpieza com
OneShot 10034589 San Borja Norte 2344, San Filmaciones de Fernando [email protected]
6 Servicio 5558234 4/03/2010
EIRL 304 Borja videos Guzman m
20504678 Francisco franciscoA@lanper
7 Lan Perú SA Av Pardo 546 Miraflores Servicio Aerolínea 2603567 28/02/2000
921 Armas u.com

P á g i n a 55 | 67
Crear un formulario de presentación

Crear un formulario con los siguientes controles:

P á g i n a 56 | 67
P á g i n a 57 | 67
Ejercicios: Formulario de Proveedores

 Caso I
Modificar el formulario para que automáticamente se genere el correlativo del registro.

Modificar el cuadro de texto de “Actividad” por un Cuadro Combinado.

El valor del cuadro combinado se debe de modificar dependiendo si es “Producto” o “Servicio”

Producto/Servicio Actividad
Producto Útiles de oficina
Producto Productos de Limpieza

Producto/Servicio Actividad
Servicio Impresiones varias
Servicio Filtros de agua
Servicio Telefonía
Servicio Filmaciones de videos
Servicio Aerolínea

 Caso II
Crear un botón que permita limpiar los datos.

 Caso III
Crear un formulario que permita dar de baja al registro. Se recomienda crear una columna
llamada Estado (A: activo, E: eliminado).

P á g i n a 58 | 67
Cómo crear funciones personalizadas en Visual Basic |
Funciones definidas por el usuario UDF

Hoy en día todos deseamos tener ser cada vez mejores en lo que nos gusta, y ponerle nuestro
toque personal a lo que hacemos. Y esto no es una excepción al utilizar Excel, ya que, al ser
esta una plataforma con demasiadas herramientas para utilizar, deseamos sacarle el mayor
provecho para al personalizarla.

Por eso mismo, funciones personalizadas en Visual Basic como crear un código de macros
personal con acceso rápido, y utilizar las funciones definidas por el usuario UDF de manera
rápida y sencilla, para que puedas llevar a cabo cualquier operación que desees, sin límites.

¿Qué son las funciones personalizadas en Visual Basic?

Estas funciones personalizadas llamadas «Funciones definidas por el usuario», o por sus siglas
en inglés UDF (User Defined Functions), son aquellas que permiten mediante el uso de las
funciones, propiedades y métodos de VBA, que ayudan a ciertos aspectos personalizados de
Excel.

Las más de 300 funciones que permite utilizar esta modalidad son realmente útiles para
personalizar como queramos nuestro Excel, haciéndolo único y diferente al de los demás.

Ya que los desarrolladores de Office no pueden predecir completamente todas las operaciones
que los usuarios van a necesitar realizar, las funciones personalizadas en Visual Basic hacen
posible el añadir las operaciones matemáticas que necesitemos a nuestro Excel.

¿Cómo crear funciones personalizadas en Visual Basic


definidas por el usuario UDF?

Seguramente te estás preguntando cómo lograr disfrutar de todas estas útiles funciones en tu
Excel, bueno, aquí te mostramos cómo hacerlo.

Los pasos para lograrlo no son para nada complicados, al contrario de lo que piensan algunos.
De hecho, son realmente sencillos.

Todo lo que tienes que hacer para lograr crear funciones personalizadas en Visual Basic
definidas por el usuario UDF, es:

Primero lo primero, debes establecer la operación que deseas llevar a cabo con estas funciones
personalizadas.

Vaya al formulario o tabla en el que desea establecer la operación ya prevista.

Una vez allí, presiona Alt+F11 para poder ver el editor de Visual Basic.

De entre las opciones que se te van a mostrar, haz clic en «Insertar» y luego «Módulo».

Verás aparecer una ventana de nuevo módulo al lado derecho del editor ya mencionado, el de
Visual Basic.

Por último, solo tendremos que usar la función en forma de código de Excel, y la operación que
deseas llevar a cabo en el módulo que acabas de crear pueda empezar a hacer lo suyo.

P á g i n a 59 | 67
¡Eso es todo! Una vez que hayas seguido todos los sencillos pasos anteriores, ya serás capaz
de utilizar la función especial que tanto deseas.

Algunas cosas que debes tener en cuenta, son que si cuentas con un equipo Mac, deberás
presionar Fin+Alt+F11, en vez de solo Alt+F11.

También debes recordar que, si cuentas con la versión de Excel de 2007, la capacidad máxima
de caracteres a ingresar en estos módulos es de 255. Y si cuentas con una versión de años
anteriores, es de solo 30 caracteres.

Igualmente, si necesitas más ayuda, te recomendamos que visites la sección de Ayuda para
Office en la página oficial de Microsoft y así le saques mayor provecho a las opciones que ofrece
Excel.

Mediante el método Application.MacroOptions en VBA podemos


crear categoría y descripción para funciones personalizadas
UDF en Excel.

Excel nos permite crear nuestras propias funciones (definidas por el usuario - UDF 'User Defined
Functions') para realizar el cálculo deseado y emplearlas en los libros.

El objeto Application tiene la siguiente expresión (variable):

Parámetros de la expresión:

- MACRO. Nombre de la macro o nombre de una función definida por el usuario.

- CATEGORY. Número que especifica la categoría de la función (Financiera, Fecha y Hora,


Texto, etc.) También admite un texto para una categoría personalizada.

Número Ref. Categoría

1 Financieras
2 Fecha y hora
3 Matemáticas y trigonométricas
4 Estadísticas
5 Búsqueda y referencia
6 Base de datos
7 Texto
8 Lógicas
9 Información
10 Comandos
11 Personalización

P á g i n a 60 | 67
12 Control de macros
13 DDE/Externas
14 Definidas por el usuario

- DESCRIPTION. Descripción de la función.

 Crear Función / Macro


Insertamos la macro para la función deseada. En nuestro caso una función para calcular la edad.

1. Con Excel abierto.


2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual
Basic.
3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos
la macro.

4. Escribir el código de la macro:


Public Function CalculaEdad(Fecha_de_nacim As Date)
CalculaEdad = DateDiff("yyyy", Fecha_de_nacim, Date)

End Function

La función CalculaEdad resumida, permite mostrar el número de años transcurridos de una


fecha.

 CATEGORÍA Y DESCRIPCIÓN DE LA FUNCIÓN


1. Ir a: Explorador de Proyectos / VBAProject / Doble Clic sobre ThisWorkbook (libro). Si el
panel no está visible Ir a: Barra de menú / Ver / Explorador de proyectos. Mostrará la
ventana donde escribimos la macro.

P á g i n a 61 | 67
2. Escribir el código de la macro:

Private Sub Workbook_Open()


Application.MacroOptions Macro:="CalculaEdad", Category:=2,
Description:="Calcula la edad desde la fecha de nacimiento en
años."

End Sub
Código para insertar la categoría y la descripción a la función.

3. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.


4. Cerrar el documento y volver a abrirlo. Importante para que los cambios se almacenen
en Excel.

 INSERTAR FUNCIÓN
1. Ir a: Cinta de opciones / Pestaña: Formulas / Grupo: Biblioteca de funciones
/ Categoría: Fecha y hora / CalculaEdad. En la categoría y con la descripción
de la función.

2. O también, Ir a: Barra de fórmulas / Botón insertar función. En la categoría y


con la descripción de la función.

3. Mostrará la ventana de argumentos de función. Con la descripción de la


función.

P á g i n a 62 | 67
Ejemplo: Crear una función que calcule el descuento total por AFP

Function DescuentoAFP(sueldo, afp)

Select Case afp

Case 1: ' PRIMA


fondo = sueldo * 0.1
seguro = sueldo * 0.0129
comision = sueldo * 0.016

Case 2: ' HABITAT


fondo = sueldo * 0.1
seguro = sueldo * 0.0116
comision = sueldo * 0.0147

Case 3: ' INTEGRA


fondo = sueldo * 0.1
seguro = sueldo * 0.0122
comision = sueldo * 0.0155

Case 4: ' PROFUTURO


fondo = sueldo * 0.1
seguro = sueldo * 0.0138
comision = sueldo * 0.0184

Case 5 To 5000000:
MsgBox "Número incorrecto. Digite un número de 1 a 4"
End Select
descuento = fondo + seguro + comision
DescuentoAFP = descuento

End Function

P á g i n a 63 | 67
Ejercicio: Crear un función que permita determinar la categoría del deudor
según normativa SBS
Según los días de atraso que tenga un deudor al no pagar su crédito (riesgo de incumplimiento),
éste recibe una categoría, con la cual identificamos su comportamiento en los pagos que tiene
con sus acreedores. La superintendencia de Banca y Seguros y AFP – SBS, identifica cinco
categorías: 0-NORMAL, 1-CPP, 2-DEFICIENTE, 3-DUDOSO y 4-PERDIDA, que está
condicionado a la cantidad de días de atraso que presente el cliente en el pago de sus cuentas.
Además la SBS identifica a los deudores según el tipo de crédito que éste adquirió, por lo cual
se tiene:

Tipo Crédito Días de Atraso Categoría SBS


[1-8 días] 0-NORMAL
02-Creditos_a_Microempresas, 13-
Creditos_a_Pequeñas_Empresas, 03- [9-30 días] 1-CPP
Creditos_de_Consumo
[31-60 días] 2-DEFICIENTE

[61-120 días] 3-DUDOSO

[121 días a más] 4-PERDIDA

[1-15 días] 0-NORMAL


12-Creditos_a_Medianas_Empresas, 07-
Creditos_a_Entidades_del_sector_público, 11- [16-60 días] 1-CPP
Creditos_a_Grandes_Empresas, 09-
[61-120 días] 2-DEFICIENTE
Creditos_a_Empresas_del_sistema_financiero
[121-365 días] 3-DUDOSO

[366 días a más] 4-PERDIDA

[1-30 días] 0-NORMAL


04-Creditos_Hipotecarios_para_vivienda
[31-60 días] 1-CPP

[61-120 días] 2-DEFICIENTE

[121-365 días] 3-DUDOSO

[366 días a más] 4-PERDIDA

La UDF Categoria_SBS debe recibir 2 parámetros (Tipo_credito, Dias_atraso)


El parámetro Tipo_credito debe ser el código por ejemplo “02” que representa
“Creditos_a_Microempresas”

P á g i n a 64 | 67

También podría gustarte