Перебрать серию текстовых полей - PullRequest
0 голосов
/ 06 мая 2020

У меня есть около 13 текстовых полей в документе MS-Word с использованием элементов управления текстовыми полями Active X. Я нашел этот код, который, кажется, отлично работает в моем тесте с одним текстовым полем.

Как я могу перебрать все 13 текстовых полей по имени вместо добавления этого кода во все 13 текстовых полей.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii > Asc("9") Or KeyAscii < Asc("0") Then
    If KeyAscii = Asc("-") Then
        If InStr(1, Me.TextBox1.Text, "-") > 0 Or _
           Me.TextBox1.SelStart > 0 Then KeyAscii = 0
    ElseIf KeyAscii = Asc(".") Then
        If InStr(1, Me.TextBox1.Text, ".") > 0 Then KeyAscii = 0
    Else
        KeyAscii = 0
    End If
End If
End Sub

1 Ответ

2 голосов
/ 06 мая 2020

Вы можете сделать что-то вроде этого:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    HandleKeyPress Me.TextBox1, KeyAscii
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    HandleKeyPress Me.TextBox2, KeyAscii
End Sub



Private Sub HandleKeyPress(txtBox As Object, ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii > Asc("9") Or KeyAscii < Asc("0") Then
    If KeyAscii = Asc("-") Then
        If InStr(1, txtBox.Text, "-") > 0 Or _
          txtBox.SelStart > 0 Then KeyAscii = 0
    ElseIf KeyAscii = Asc(".") Then
        If InStr(1, txtBox.Text, ".") > 0 Then KeyAscii = 0
    Else
        KeyAscii = 0
    End If
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...