Пользовательская форма Excel VBA для проверки существующей даты

#excel #vba #validation #date #userform

#excel #vba #проверка #Дата #пользовательская форма

Вопрос:

В настоящее время я работаю над текстовым полем (textbox1), в котором должна быть введена дата. Однако до сих пор также можно было ввести несуществующую дату, например 40-40-2019. Есть ли способ проверить textbox1 только с существующими датами? В настоящее время я использую ввод даты в европейском формате, так что дд-мм-гггг. И приведенный ниже код для изменения даты в стандартный формат:

 Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 Me.TextBox1 = Format(Me.TextBox1, "DD-MM-YYYY")
End Sub 
  

Я ожидаю, что на выходе будут только существующие функции даты

Ответ №1:

Используется Isdate() для проверки даты:

 Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Isdate(Me.TextBox1.Text) then
        Me.TextBox1.Text = Format(Me.TextBox1.Text, "DD-MM-YYYY")
    Else
        '...
    End if
End Sub 
  

https://www.techonthenet.com/excel/formulas/isdate.php

Комментарии:

1. Привет, это не поможет проверить, существует ли дата, я прав?

2. @WouterGroeneweg, нет, но предполагается, что вам все равно придется вручную исправлять уже заполненные даты. Если это огромный набор данных, вы могли бы выполнить Isdate в цикле столбцов и выделить даты, которые необходимо исправить.

3. Да, это сообщит вам, «существует» ли дата, т. е. является ли она действительной. В инструкции Else вы решаете, как реагировать на неверную дату. Вы могли бы удалить существующий текст или отправить сообщение пользователю.

4. @D_Bester Большое вам спасибо за вашу помощь!