Curso Macros en Excel – Cap. 79 – Agenda telefónica desde cero PARTE 2
En este capítulo daremos seguimiento a nuestro Proyecto de Agenda telefónica desde cero usando macros y VBA en Excel. La primera parte fue bien recibida, por lo que espero que siga teniendo la misma aceptación. En esta segunda parte retomamos el Formulario de Alta que ya diseñamos, pero ahora le daremos algo de interactividad, al poder validar el correo electrónico, poder elegir una imagen para el contacto, entre otras cosas más.
Ver video Capítulo 79 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Avance del Proyecto
Como lo has notado, este es el segundo video del Proyecto de nuestra agenda telefónica, pero el número 79 de nuestro curso de macros. A continuación enlisto lo que ya hemos hecho y lo que haremos en este capítulo.
- Validar el email del contacto. PARTE 2
- Elegir una imagen para el contacto. PARTE 2
- Llenar lista para elegir el género del contacto. PARTE 2
- Deshabilitar TextBox en caso de que el contacto no desee proporcionar datos. PARTE 2
Validar el email
Para lograr que podamos validar el email del contacto, nos basaremos en el post Validar email en Excel con macros vba, donde aprendimos a lograrlo mediante una función que usa una expresión regular para saber si el correo tiene la estructura correcta. Voy a resumir los pasos para validar el email:
- Activamos la Referencia Microsoft VBScript Regular Expresions 1.0 en el IDE de VBA entrando a Herramientas > Referencias.
- Copiamos la función valida_email_fx y la pegamos en un Módulo.
Figura 1. Activar Referencia Microsoft VBScript Regular Expresions 1.0 para validar email.
Una vez que peguemos la función usaremos el evento Exit del TextBox4, el cual detectará la salida del control y mandará llamar la siguiente macro para indicar si el correo es válido o no.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) If valida_email_fx(Me.TextBox4.Value) = False Then MsgBox "Se recomienda que valides el email", vbExclamation Cancel = True Else ' End If End Sub
Figura 2. Validación de correo usando expresiones regulares en Excel.
Fuente: Validar email en Excel con macros vba.
Llenar lista de géneros
En la campo sexo tenemos un Cuadro combinado (ComboBox) el cual deseamos que se llene con los valores: M, F y No especifica. Para esto tendremos que usar el evento Initialize del Formulario para rellenar el Combo, además de usar el evento Change del mismo control, para asignarle un valor a la etiqueta Label7 con la descripción del género.
Private Sub UserForm_Initialize() Me.ComboBox1.MatchEntry = fmMatchEntryFirstLetter Me.ComboBox1.MatchRequired = True Me.ComboBox1.AddItem "Elige" Me.ComboBox1.AddItem "M" Me.ComboBox1.AddItem "F" Me.ComboBox1.AddItem "No especifica" Me.ComboBox1.Value = "Elige" End Sub Private Sub ComboBox1_Change() Select Case Me.ComboBox1.Value Case Is = "M" Me.Label7.Caption = "Masculino" Case Is = "F" Me.Label7.Caption = "Femenino" Case Is = "No especifica" Me.Label7.Caption = Me.ComboBox1.Value End Select End Sub
Figura 3. Rellenar ComboBox y usar el evento Change para detectar cuando se eligen los elementos.
Fuente 1: Curso Excel VBA y Macros – Cap. 53 y 54 – Formularios – Control ComboBox ó Cuadro combinado.
Fuente 2: Curso Excel VBA y Macros – Cap. 22 – Instrucción Select…Case para múltiples condiciones.
Seleccionar imagen
En el UserForm1 insertamos un Control de imagen (Image1), el cual mostrará la imagen que deseemos asignar a un contacto. También tenemos un Botón (CommandButton2) que tiene la etiqueta Examinar. Éste botón nos mostrará un Cuadro de diálogo para elegir una imagen, la cual se mostrará en el control Image1.
Es importante aclarar que solo será posible trabajar con los siguientes tipos de imagen.
- Mapa de bits. *.BMP.
- Imágenes *.GIF.
- Imágenes JPEG. *.JPG.
- Metarchivos. *.WMF, *.EMF.
- Íconos. *.ICO, *.CUR.
Figura 4. Insertar imágenes usando Formulario en Excel y Control Image.
Para lograr insertar la imagen en el Control, usamos la siguiente macro.
Private Sub CommandButton2_Click() Dim Dialogo As FileDialog Dim ArchivoSeleccionado As Variant Set Dialogo = Application.FileDialog(msoFileDialogFilePicker) Dialogo.Title = "Elegir archivo" Dialogo.Filters.Add "Imágenes", "*.bmp, *.gif, *.jpg, *.ico" If Dialogo.Show = -1 Then For Each ArchivoSeleccionado In Dialogo.SelectedItems MsgBox ArchivoSeleccionado '''''''''''''''''' With Me.Image1 .BorderStyle = fmBorderStyleNone .PictureSizeMode = fmPictureSizeModeStretch .Picture = LoadPicture(ArchivoSeleccionado) End With '''''''''''''''''' Next ArchivoSeleccionado Else MsgBox "Nada" End If Set Dialogo = Nothing End Sub
Fuente 1: Curso Excel VBA y Macros – Cap. 46 – FileDialog para Abrir, Guardar como, Elegir Archivo y Carpeta.
Fuente 2: Curso Excel VBA y Macros – Cap. 60 – Formularios – 3 maneras de mostrar imágenes.
Activar o desactivar Controles.
Tenemos una Casilla de verificación (CheckBox1) la cual nos ayudará a habilitar o deshabilitar dos Cuadros de texto. Si el contacto no quiere proporcionar datos de Página Web o su identidad en redes sociales, entonces se marca el CheckBox y los TextBoxes se inhabilitan.
Figura 5. Proporcionar o no la información de redes sociales.
Usaremos la siguiente macro VBA para lograr lo anterior.
Private Sub CheckBox1_Click() If Me.CheckBox1.Value = True Then Me.TextBox8.Enabled = False Me.TextBox8.Value = 0 Me.TextBox9.Enabled = False Me.TextBox9.Value = 0 Else Me.TextBox8.Enabled = True Me.TextBox9.Enabled = True End If End Sub
Fuente: Curso Excel VBA y Macros – Cap. 61 – Formularios – CheckBox – 5 trucos que tal vez no conocías.
Descargar el archivo de ejemplo
079 – Proyecto Agenda 02 -Validar email, insertar imágenes, Listas – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.