#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
Комментарии:
1. Привет, это не поможет проверить, существует ли дата, я прав?
2. @WouterGroeneweg, нет, но предполагается, что вам все равно придется вручную исправлять уже заполненные даты. Если это огромный набор данных, вы могли бы выполнить
Isdate
в цикле столбцов и выделить даты, которые необходимо исправить.3. Да, это сообщит вам, «существует» ли дата, т. е. является ли она действительной. В инструкции Else вы решаете, как реагировать на неверную дату. Вы могли бы удалить существующий текст или отправить сообщение пользователю.
4. @D_Bester Большое вам спасибо за вашу помощь!