Curso Excel V
Curso Excel V
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.
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.
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.
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.
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:
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:
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.
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.
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.
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:
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.
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.
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.
P á g i n a 11 | 67
Paso 1: Click izquierdo en la flecha encerrada
“Visual Basic”.
P á g i n a 12 | 67
Ejercicio I Formulario
P á g i n a 13 | 67
Ejercicio II Formulario
Hoja Datos:
P á g i n a 14 | 67
Ejercicio III Formulario
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.
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.
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.
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.
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.
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:
2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra el cuadro de
Dialogo Grabar Macro:
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.
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
P á g i n a 21 | 67
13. Active los siguientes cuadros o ventanas:
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.
• 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.
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:
Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará
Se visualiza:
Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará:
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.
P á g i n a 24 | 67
Códigos más Comunes
Range("A1").Select
Activecell.FormulaR1C1="Paty Acosta"
Letra Negrita
Selection.Font.Bold = True
Letra Cursiva
Selection.Font.Italic = True
Letra Subrayada
Selection.Font.Underline = xlUnderlineStyleSingle
Centrar Texto
Alinear a la izquierda
Alinear a la Derecha
With Selection
.HorizontalAlignment = xlRight
End With
Tipo de Letra(Fuente)
.Name = "AGaramond"
End With
Copiar
Selection.Copy
P á g i n a 25 | 67
Pegar
ActiveSheet.Paste
Cortar
Selection.Cut
Ordenar Ascendente
Orden Descendente
Buscar
Insertar Fila
Selection.EntireRow.Insert
Eliminar Fila
Selection.EntireRow.Delete
Insertar Columna
Selection.EntireColumn.Insert
Eliminar Columna
Selection.EntireColumn.Delete
Abrir un Libro
Grabar un Libro
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.
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.
Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload
Me” cerrará el formulario.
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:
Probar el Formulario
Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:
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.
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.
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.
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.
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.
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.
Tipo Entero
Para una variable numérica de valores de -32768 a 32767.
Para ello usaremos el código
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
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:
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:
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:
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
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 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:
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.
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.
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.
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:
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.
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.
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]
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
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.
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.
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).
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
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.
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)
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:
MsgBox "Mi Valor " & (MiCadena) & " y Mi Fecha " & (MiCadena2)
End Sub
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:
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:
P á g i n a 47 | 67
Cajas de combo dependientes de Excel VBA
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.
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.
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.
P á g i n a 49 | 67
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "Animals"
.AddItem "Sports"
.AddItem "Food"
End With
End Sub
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.
ComboBox2.Clear
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.
Range("A1").Value = ComboBox2.Value
End Sub
Resultado:
P á g i n a 51 | 67
Uppercase y Lowercase en VBA
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)
P á g i n a 52 | 67
• Se obtiene el texto en minúscula
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.
Sub BuscarUltimaFila()
End Sub
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
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.
P á g i n a 55 | 67
Crear un formulario de presentación
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.
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.
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.
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.
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.
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.
Parámetros de la expresión:
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
End Function
P á g i n a 61 | 67
2. Escribir el código de la macro:
End Sub
Código para insertar la categoría y la descripción a la función.
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.
P á g i n a 62 | 67
Ejemplo: Crear una función que calcule el descuento total por AFP
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:
P á g i n a 64 | 67