如何限制表单字段的字符数

时间:2019-05-01 01:42:13

标签: vba ms-access access-vba

我有一个带有未绑定注释字段的表单,我们想限制其中的字符数。为了使内容尽可能整洁并确认没有其他内容,我创建了一个新表单,其中包含两个未绑定的文本框。输入数据的位置为“ 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

解决问题。如果您开始输入数据,一切都很好,它将计算长度。但是,当达到极限时,该框就会出现,但是一旦您单击“确定”,该字段就会变为空白。

我也尝试过输入验证规则,但是直到失去焦点后它才触发。

如何防止它杀死已经输入的数据?实际的字段限制要长得多,并且重新键入注释将不会生效。

2 个答案:

答案 0 :(得分:2)

  

...当达到极限时,会出现该框,但是一旦您单击OK,它就会将该字段空白。    您如何防止它杀死已经输入的数据?

更改此行...

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

...对此...

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

通过Me.Text0.Text赋值表达式对其进行更改后,该更改将保留Left()的前20个字符。您的原始代码“杀死已输入的数据” 的原因是因为Me.Text0的意思是Me.Text0.Value,而不是Me.Text0.Text

答案 1 :(得分:0)

您不需要任何代码。只需在文本框中使用输入掩码设置即可。

在输入掩码中,只需输入AAAAA(其中20个)。

这样,您根本不需要任何代码,并且用户只能输入所需的任意字符。