Curso Macros en Excel – Cap. 80 – Agenda telefónica desde cero PARTE 3

<<CURSO COMPLETO EN YOUTUBE>>

En este capítulo daremos seguimiento a nuestro Proyecto de Agenda telefónica desde cero usando macros y VBA en Excel. En esta tercera parte veremos cómo implementar el Calendario de Andrés Rojas Moncada en nuestro propio Formulario de Alta, así como usar funciones VBA para restringir el ingreso de texto o número en ciertos controles de texto.

Ver video Capítulo 80 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 tercer video del Proyecto de nuestra agenda telefónica, pero el número 80 de nuestro curso de macros. A continuación enlisto lo que ya hemos hecho y lo que haremos en este capítulo.

Calendario en UserForm

Para poder insertar la fecha de nacimiento haremos uso del Calendario de Andrés Rojas Moncada, del cual ya hicimos una revisión en este mismo sitio.

Como vimos anteriormente, para usar el control de calendario de Office lo debemos instalar, pero si tenemos Excel de 64 bits entonces no hay manera de poder usarlo. Ante este inconveniente, mi amigo Andrés Rojas Moncada del canal Excel hecho fácil desarrolló un genial control de calendario que fácilmente podemos adecuar a nuestros desarrollos, sin necesidad e instalar nada.

  • En este video Andrés nos explica el funcionamiento de su calendario.

  • Descarga el control de calendario desde esta página: http://www.excelhechofacil.com/p/calendario.html.

  • Abrimos el archivo cCalendario.xlsm.

  • Ejecutar el editor de macros vba con [Alt] + [F11].

  • Ahora vamos a mover el módulo llamado ModuloCalendario y el formulario llamado frmCalendario a nuestro archivo donde queremos utilizar el calendario de Andrés.

Movemos los archivos frmCalendario y ModuloCalendario de un proyecto a otro.

Figura 1. Movemos los archivos frmCalendario y ModuloCalendario de un proyecto a otro.

Ahora podemos cerrar el archivo cCalendario.xlsm. Los elementos que hemos movido a nuestro archivo debemos de hacerles unas pocas modificaciones para que podamos mandar llamar al calendario.

Damos doble clic en el botón que insertamos, el que se ve en la Figura 1 con la imagen del calendario, y pegamos el siguiente código:

Private Sub CommandButton3_Click()
frmCalendario.Show
End Sub
  • Ahora nos vamos al editor de macros vba y damos doble clic sobre el Módulo ModuloCalendario.

  • Ubica una macro que se llama RecibeLaFecha y reemplaza la macro con el siguiente código:

Public Sub RecibeLaFecha(Dia As Long, Mes As Long, Ano As Long)
    Dim FechaRecibida As Date
    FechaRecibida = VBA.DateSerial((VBA.CInt(Ano)), (VBA.CInt(Mes)), (VBA.CInt(Dia)))
    
    'DIRECCIONE LA FECHA AL CONTROL O CELDA QUE REQUIERA
    'MsgBox FechaRecibida
    UserForm1.TextBox5.Value = FechaRecibida
End Sub

Con los cambios anteriores, al dar clic en el botón, se mostrará el Calendario. Damos doble clic sobre cualquier número y la fecha se insertará en el TexBox5, de la fecha de nacimiento.

image

Figura 2. Calendario de Andrés Rojas Moncada del canal Excel Hecho Fácil.

Permitir sólo número o texto en Cuadros de texto

Ahora toca usar un par de funciones que tenemos en este mismo sitio, las cuales son SoloNumero y SoloTexto, que como sus nombres lo indican, van a restringir TextBoxes para que acepten o sólo número o sólo texto.

En este link, vamos a copiar las dos funciones y las pegamos en el Módulo1 de nuestro proyecto.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
Function SoloTexto(Texto As Variant)
'
    Dim Caracter As Variant
    Dim Largo As String
    Dim i As Integer
    On Error Resume Next
    Largo = Len(Texto)
    '
    For i = 1 To Largo
        Caracter = CInt(Mid(Texto, i, 1))
        '
        If Caracter <> "" Then
            If Not Application.WorksheetFunction.IsText(Caracter) Then
                Texto = Replace(Texto, Caracter, "")
                SoloTexto = Texto
            Else
            End If
        End If
        '
    Next i
    '
    SoloTexto = Texto
    On Error GoTo 0
    '
End Function
'
Function SoloNumero(Texto As Variant)
'
    Dim Caracter As Variant
    Dim Largo As Integer
    Dim i As Integer
    On Error Resume Next
    Largo = Len(Texto)
    '
    For i = 1 To Largo
        Caracter = Mid(CStr(Texto), i, 1)
        '
        If Caracter <> "" Then
            If Caracter < Chr(48) Or Caracter > Chr(57) Then
                Texto = Replace(Texto, Caracter, "")
                SoloNumero = Texto
            Else
            End If

        End If
        '
    Next i
    '
    SoloNumero = Texto
    On Error GoTo 0
    '
End Function

La ventaja de usar funciones en Excel y VBA, es que las podemos reutilizar las veces que deseemos sin necesidad de repetir todo el código cada vez que necesitemos usarlas en algún Cuadro de texto.

Usamos el siguiente código para mandar llamar las funciones y permitir sólo texto en los campos de nombre, y sólo número en los campos de teléfono y CP.

Private Sub TextBox1_Change()
Me.TextBox1.Value = SoloTexto(Me.TextBox1.Value)
End Sub

Private Sub TextBox6_Change()
Me.TextBox6.Value = SoloNumero(Me.TextBox6.Value)
End Sub

Descarga el archivo de ejemplo

080 – Proyecto Agenda 03 -Insertar calendario, validar texto y números – EXCELeINFO.xlsm

<<CURSO COMPLETO EN YOUTUBE>>

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.

You may also like...

Leave a Reply

Your email address will not be published.

%d bloggers like this: