Te anexo el código para las validaciones de las fechas.
Observa como en la validación de la FechaRegistro, si no captura una fecha válida, la macro se sale, eso vuelve al campo obligatorio.
En las validaciones de las otras fechas revisa una fecha válida y que sea diferente de vacío. Si la fecha está vacía, puede continuar, ya no tendrás el problema de "no coinciden los tipos"
Private Sub Button_Registrar_Click()
Application.ScreenUpdating = False
'
If MsgBox("Está seguro de grabar los datos?", vbOKCancel) = vbCancel Then
Exit Sub
End If
' Validaciones
If TextBox_FechaRegistro = "" Or Not IsDate(TextBox_FechaRegistro) Then
MsgBox "Fecha de registro vacía", vbExclamation, "Digitar fecha registro"
TextBox_FechaRegistro.SetFocus
Exit Sub
End If
If ComboBox1_PersonaRegistro.ListIndex = -1 Or ComboBox1_PersonaRegistro = "" Then
MsgBox "Seleccionar persona registro", vbExclamarion, "Seleccionar persona registro"
ComboBox1_PersonaRegistro.SetFocus
Exit Sub
End If
wfec1 = "" 'Fecha1ercontacto
wfec2 = "" 'FechaInicioReparacion
wfec3 = "" 'FechaFinalizacion
If IsDate(TextBox_Fecha1ercontacto) And TextBox_Fecha1ercontacto <> "" Then
wfec1 = CDate(TextBox_Fecha1ercontacto)
End If
If IsDate(TextBox_FechaInicioReparacion) And TextBox_FechaInicioReparacion <> "" Then
wfec2 = CDate(TextBox_FechaInicioReparacion)
End If
If IsDate(TextBox_FechaFinalizacion) And TextBox_FechaFinalizacion <> "" Then
wfec3 = CDate(TextBox_FechaFinalizacion)
End If
'
'Registro
Sheets("DATOS").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
ActiveSheet.Cells(4, 1) = TextBox_NºCaso
ActiveSheet.Cells(4, 2) = CDate(TextBox_FechaRegistro)
ActiveSheet.Cells(4, 3) = ComboBox1_PersonaRegistro
ActiveSheet.Cells(4, 4) = ComboBox2_Proyecto
ActiveSheet.Cells(4, 5) = Label7
ActiveSheet.Cells(4, 6) = ComboBox3_LugarEspecifico & " " & TextBox_LugarEspecifico
ActiveSheet.Cells(4, 7) = TextBox_PersonaReclamo
ActiveSheet.Cells(4, 8) = TextBox_DescripcionProblema
ActiveSheet.Cells(4, 9) = ComboBox4_Estado
ActiveSheet.Cells(4, 10) = wfec1 'Fecha1ercontacto
ActiveSheet.Cells(4, 11) = ComboBox5_ClasifGeneral
ActiveSheet.Cells(4, 12) = TextBox_CausaProblema
ActiveSheet.Cells(4, 13) = wfec2 'FechaInicioReparacion
ActiveSheet.Cells(4, 14) = TextBox_SolucionProblema
ActiveSheet.Cells(4, 15) = ComboBox_ResponsableSolucion
ActiveSheet.Cells(4, 16) = ComboBox_MetodoSolucion
ActiveSheet.Cells(4, 17) = wfec3 'FechaFinalizacion
Range("R5:Z5").Select
Application.CutCopyMode = False
Selection.Copy
Range("R4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'ActiveWindow.SmallScroll Down:=-9
Range("A1").Select
Sheets("DATOS SIN FORMULAS").Select
'ActiveWindow.ScrollRow = 1
Range("A4:AA4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A1").Select
Sheets("DATOS").Select
Range("A4:AA4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("DATOS SIN FORMULAS").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("DATOS").Select
Range("A1").Select
Application.CutCopyMode = False
Sheets("REGISTRO & ACTUALIZACIÓN").Select
Range("A1").Select
TextBox_NºCaso = Empty
TextBox_FechaRegistro = Empty
ComboBox1_PersonaRegistro = Empty
ComboBox2_Proyecto = Empty
ComboBox3_LugarEspecifico = Empty
TextBox_PersonaReclamo = Empty
TextBox_DescripcionProblema = Empty
ComboBox4_Estado.RowSource = Empty
TextBox_Fecha1ercontacto = Empty
ComboBox5_ClasifGeneral = Empty
TextBox_CausaProblema = Empty
TextBox_FechaInicioReparacion = Empty
TextBox_SolucionProblema = Empty
ComboBox_ResponsableSolucion = Empty
ComboBox_MetodoSolucion = Empty
TextBox4_FechaFinalizacion = Empty
Dim objeto As Object
For Each objeto In Me.Controls
If TypeName(objeto) = "Combobox" Then
objeto.Value = ""
End If
Next objeto
TextBox_NºCaso.SetFocus
Application.ScreenUpdating = True
End Sub
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.