VBA- Как добавить другой фильтр IF Not item в код?

#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