Шаг 59 - Проверка ввода на уровне формы (KeyDown, KeyUp, KeyPress)
События:
KeyDown KeyUp KeyPress
Посылаются форме когда производится ввод данных. Событие KeyPress возникает когда пользователь нажимает клавишу, у которой есть ASCII код. Это событие не сгенирируется при нажатии функциональных клавиш. При том эти события есть как у формы:
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) End Sub
Так и у элементов управления TextBox, например:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) End Sub
А это в свою очередь позволяет проверять ввод. Например, если в поле нужно ввести цифру, то легко проверить, что вводит пользователь. События KeyUp и KeyDown применяются для специальных функциональных клавиш или комбинаций типа Ctrl+Del, так как событие KeyPress их не отловит. Удобно использовать данное событие для проверки заполненности полей. Вот форма:
А вот код для нее. В момент нажатия ввода символа в поле проверяется заполненость полей:
Private Sub Test() Dim ctrl As Control Dim bool As Boolean bool = True For Each ctrl In Controls If TypeName(ctrl) = "TextBox" Then If ctrl.Text = "" Then bool = False End If End If Next ctrl UserForm1.CommandButton1.Enabled = bool End Sub Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Call Test End Sub Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Call Test End Sub Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Call Test End Sub
Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.