#vba
#vba
Вопрос:
If Not (IsDate(TextBox11)) Or Date > CDate(TextBox11) Then
Select Case MsgBox("You've entered letters/past date, try again! MM/DD/YYYY Format!", vbRetryCancel)
Ячейка N29 на листе 10 (скрытая) определяет будущую дату.
Пытаюсь добавить к этому третий параметр, ЕСЛИ ОН НЕ основан, если ввод даты выходит за рамки этой будущей даты.
Спасибо.
Ответ №1:
Пожалуйста, разделите пары test / msg и, наконец, посмотрите, есть ли сообщение, которое нужно сообщить пользователю. Теперь это можно легко расширить, чтобы иметь больше тестов и сообщений.
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox11.Text <> "" Then
On Error Resume Next
msg = ""
If Not (IsDate(TextBox11)) Then
msg = "Not a date: use MM/DD/YYYY Format!"
ElseIf Date > CDate(TextBox11) Then
msg = "You've entered letters/past date, try again!"
End If
If msg <> "" Then
Select Case MsgBox(msg, vbRetryCancel)
Case vbRetry
Cancel = True
Case vbCancel
TextBox11.Text = vbNullString
End Select
Else
TextBox11 = Format(CDate(TextBox11), "mm/dd/yyyy")
End If
End If
End Sub
Ответ №2:
Вы можете добавить еще один ElseIf следующим образом:
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox11.Text <> "" Then
On Error Resume Next
msg = ""
If Not (IsDate(TextBox11)) Then
msg = "Not a date: use MM/DD/YYYY Format!"
ElseIf Date > CDate(TextBox11) Then
msg = "You've entered letters/past date, try again!"
' LOOK HERE
ElseIf Date < CDate(TextBox11) Then
msg = "You have entered letters/future date, try again!"
End If
If msg <> "" Then
Select Case MsgBox(msg, vbRetryCancel)
Case vbRetry
Cancel = True
Case vbCancel
TextBox11.Text = vbNullString
End Select
Else
TextBox11 = Format(CDate(TextBox11), "mm/dd/yyyy")
End If
End If
End Sub