Esta nueva entrada la considero como una de las más importantes de este blog. Lo que pretendo mostrar con ella es la forma de validar el formato de una fecha cuando introducimos el dato a través de un textbox y además, y esto es lo importante, la forma de grabar ese dato y almacenarlo una hoja de Excel.
Este ejemplo es el inicio y la base para hacer cualquier programa de almacenaje o base de datos, dado que a través de la macro podemos ir introduciendo una serie de datos (y validándolos) hasta construir una base de datos completa en la que después realizar cálculos o cualquier cosa que nos planteemos.
Lo primero que vamos a hacer es construir en una hoja (lo podemos hacer en un userform), un pequeño formulario para introducir los datos, donde mediante un botón se grabaran los mismos en otra hoja.
Supongamos que usamos la «hoja1» de nuestro libro y pulsamos en la ficha «Programador» y luego en
«Insertar». A continuación insertamos desde «Controles ActiveX» un Botón de comando (en la macro CommandButton1). Con este botón activaremos la validación y la posterior grabación del dato si es correcto.
Seguidamente insertamos un Cuadro de texto (en la macro TextBox1) que es donde vamos introducir la fecha con un formato específico.
Una vez que tengamos correctamente compuesta nuestra hoja, entramos en el editor de Visual Basic y pegamos la siguiente macro en la hoja1 del proyecto.
Private Sub CommandButton1_Click()
Dim i As Double
Dim final As Double
Dim j As Double
Dim actual As Double
'introducimos la función validarfecha para que evalúe los datos introducidos en el TextBox1
'y mostramos una condición, si los datos no tienen formato de fecha entonces mostrar mensaje que está entre comillas:
validarfecha = IsDate(TextBox1.Value)
If validarfecha = False Then
MsgBox "DEBES INTRODUCIR EL SIGUIENTE FORMATO PARA LA FECHA 00/00/0000"
Else
'si los datos con correctos, se graban en la hoja2 en A1 y así sucesivamente
If validarfecha = True Then
For i = 1 To 1000
If Hoja2.Cells(i, 1) = "" Then
final = i
Exit For
End If
Next
Hoja2.Cells(final, 1) = CDate((TextBox1))
'despues de grabar los datos mostramos mensaje confirmando grabación de datos
MsgBox "LOS DATOS HAN SIDO GRABADOS CORRECTAMENTE"
'limpiamos los datos ya grabados del Textbox1
TextBox1.Value = Empty
End If
End If
End Sub
Los datos cuando se graben pasarán a la hoja2, tal y como se ordena en la macro. En caso de no tener el formato adecuado, no se grabarán.
Pues eso es todo, nada más y nada menos 🙂
Como siempre, espero que os sea de utilidad.
Descarga el archivo pulsando en: VALIDAR Y ALMACENAR FECHA
al grabarlo en la hoja o planilla, invierte el mes por el dia…….????????????????
Efectivamente Anónimo, tienes toda la razón. La macro estaba recogiendo el valor del textbox como si fuese un texto y al grabar los datos en la hoja2 invertía el mes por el día. Ya está solucionado, basta con sustituir la línea de código "Hoja2.Cells(final, 1) = Textbox1.value" por Hoja2.Cells(final, 1) = CDate((TextBox1)).CDate aplica formato de fecha a los datos introducidos en el Textbox y permite su correcta grabación.Muchas gracias por comentarlo y por participar. Saludos.
Y como pudiera también el mes por separado de la fecha que fue incluida????
corrijo como pudiera obtener el mes de la fecha que se guardo???
Hola Jack:
Incluye despues de esta línea de código:
Hoja2.Cells(final, 1) = CDate((TextBox1))
Esta:
Hoja2.Cells(final, 2) = Format(Date, "MMMM")
Pondrá al lado de la fecha que has indicado el mes en el que has guardo los datos.
Saludos.