События:
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