Проверять значение TextBox'ов перед тем, как пытаться присваивать их содержимое переменным типа Date. В данном случае Вы пытаетесь присвоить пустую строку переменной типа Date, что закономерно вызывает ошибку несовместимости типов.
Наподобие:
Код:
Private Sub Command1_Click()
With Text4
If IsDate(.Text) Then
a = CDate(.Text)
MsgBox "Date value is: " & CStr(a), vbInformation + vbOKOnly, "Success"
Else
MsgBox "Value of field Text4:" & vbLf & vbLf & "[" & .Text & "]" & vbLf & vbLf & "is not a date." & vbLf & vbLf & "Please enter only date value.", vbExclamation + vbOKOnly, "Error"
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
Exit Sub
End If
End With
…
…