Мне нужен цикл, чтобы постоянно запрашивать IsDate
запись.
Поскольку вы используете событие TextBox1_Exit
, вам на самом деле не нужен цикл для того, чтобы он постоянно просил пользователя ввести правильную дату, когда это не так. Это действительно будет происходить всякий раз, когда пользователь пытается покинуть TextBox1
.
Проблема с вашим кодом заключается в том, что даже если вы установите Cancel = True
, вы все равно достигнете строки, которая устанавливает TextBox2.Text
, потому что Cancel = True
не выходит автоматически из Sub. Вам нужно либо выйти из Sub сразу после Cancel = True
, либо поместить следующую строку в ветку Else
.
Вы можете использовать что-то вроде этого:
If Not IsDate(TextBox1.Text) Then
MsgBox "Date required"
Cancel = True
Exit Sub
End If
'Display value in another textbox for testing purposes
TextBox2.Text = Format(CDate(TextBox1.Text), "dd/mm/yyyy")
Или это:
If Not IsDate(TextBox1.Text) Then
MsgBox "Date required"
Cancel = True
Else
'Display value in another textbox for testing purposes
TextBox2.Text = Format(CDate(TextBox1.Text), "dd/mm/yyyy")
End If