Problemas con formato fecha en textbox

Primero que todo agradecido por las enseñanzas, soy novato y estoy aprendiendo solo con estos foros. Tengo el siguiente problema: tengo varios textbox y uno de ellos con formato de fecha, cuyo código es el siguiente:
Private Sub TextBox2_AfterUpdate()
On Error Resume Next
TextBox2.Text = Format(TextBox2, "dd/mm/yyyy")
If Err <> 0 Then
MsgBox ("Debe ingresar los valores con formato dd/mm/aaaa"), vbRetryCancel, ATENCION
On Error GoTo 0
End If
End Sub
y ademas un boton de injgreso de datos a la planilla excel:
Private Sub CommandButton1_Click()
Range("b65536").End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(0, 1) = CDate(TextBox2)
ActiveCell.Offset(0, 3) = CDbl(TextBox3.Value)
ActiveCell.Offset(0, 2) = TextBox4
ActiveCell.Offset(0, 4) = "Girado"
ActiveCell.Offset(0, 5) = TextBox5
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
End Sub
El problema sucede cuando la fecha es ingresada en un formato erróneo, por ejemplo 02052008 debiendo ser 02/05/2008, para lo cual arroja el msg programado; lo que necesito entonces es que arroje el mensaje y no permita avanzar de textbox si es que el formato no es el correcto. Debido que hasta ahora permite avanzar y avanzar y si presionan botón ingresar arroja error de macros debido a que el textbox2 lo traspasa "cdate" y 02052008 no corresponde.

1 Respuesta

Respuesta
1
Agregá la misma función CDate en el textbox:
TextBox2.Text = Format(CDate(TextBox2), "dd/mm/yyyy")
Pruébalo y comentame si todo quedó bien.
Sigue con problemas... me arroja el msg, pero permite seguir avanzando a los sgtes. Textbox. Otro dato es que en el botón que "ingresa" tengo otro procedimiento que es el que me destaca el error:
Private Sub CommandButton1_Click()
Range("b65536").End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(0, 1) = CDate(TextBox2)
ActiveCell.Offset(0, 3) = CDbl(TextBox3.Value)
ActiveCell.Offset(0, 2) = TextBox4
ActiveCell.Offset(0, 4) = "Girado"
ActiveCell.Offset(0, 5) = TextBox5
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
End Sub
No se si estaré redundando en los procedimientos. Puntualmente necesito que no permita ingresar la fecha por ejemplo 31122008, sino que sea 31/12/2008, y que además, no permita seguir avanzando a los sgtes. Textbox, hasta que sea el ingreso correcto.
Cambiá el evento, dejándola así:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox2.Text = Format(CDate(TextBox2), "dd/mm/yyyy")
If Err <> 0 Then
MsgBox ("Debe ingresar los valores con formato dd/mm/aaaa"), vbRetryCancel, ATENCION
Cancel = True
End If
'la siguiente puede quedar en el botón de comando y quitarla de aquí
ActiveCell.offset(0,1) = CDate(TextBox2)
End Sub
La instrucción del botón no presenta error.
Pruébalo y si aún no funciona, verificá la configuración regional desde el Panel y escribime nuevamente.
Finalmente funcionó... lo único es que se demora un tanto en pasar los datos a la hoja, pero es lo de menos... Te agradezco un montón la yuda brindada... sinceramente, te pasaste.
Gracias nuevamente!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas