Как ограничить количество символов в поле формы - PullRequest
2 голосов
/ 01 мая 2019

У меня есть форма с несвязанным полем комментариев, которое мы хотим ограничить количеством символов в нем.Чтобы сделать вещи максимально чистыми и убедиться, что это не что-то еще, я создал новую форму с двумя несвязанными текстовыми полями.«Text0» - это место, где вы вводите данные, а «Text1» - счетчик.

Private Sub Text0_Change()
    If Not IsNull(Me.Text0.Text) Then
        If Len(Me.Text0.Text) > 20 Then
            Dim resp As Integer
            resp = MsgBox("Exceeded the number of characters allowed.", vbOKOnly, "Too long")
            Me.Text0 = Left(Me.Text0, 20)
        End If
        Me.Text1 = Len(Me.Text0.Text) & _
        " /20 characters used."
    Else
        Me.Text1 = "0 /20 characters used."
    End If

End Sub

К вопросу.Если вы начинаете вводить данные, все в порядке, он считает длину.Однако, когда он достигает предела, окно появляется, но как только вы нажимаете OK, оно закрывает поле.

Я также пытался ввести правило проверки, но оно не срабатывает до потери фокуса.

Как вы предотвращаете уничтожение уже введенных данных?Фактический предел поля намного длиннее, и повторный ввод комментариев не будет выполняться.

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

... когда он достигает предела, появляется окно, но как только вы нажимаете OK, оно закрывает поле. Как вы предотвращаете уничтожение уже введенных данных?

Изменить эту строку ...

Me.Text0 = Left(Me.Text0, 20)

... к этому ...

Me.Text0.Text = Left(Me.Text0.Text, 20)

Это изменение сохраняет первые 20 символов Me.Text0.Text, когда оно изменяется выражением присваивания Left(). Причина, по которой ваш исходный код был «уничтожает уже введенные данные» , заключается в том, что Me.Text0 означает Me.Text0.Value, а не Me.Text0.Text

0 голосов
/ 02 мая 2019

Вам не нужен код. Просто используйте настройку маски ввода в текстовом поле.

В маске ввода просто введите AAAAA (20 из них).

таким образом, вам вообще не нужен код, и пользователь сможет ввести столько символов, сколько вы хотите.

...