我有一个带有未绑定注释字段的表单,我们想限制其中的字符数。为了使内容尽可能整洁并确认没有其他内容,我创建了一个新表单,其中包含两个未绑定的文本框。输入数据的位置为“ 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
解决问题。如果您开始输入数据,一切都很好,它将计算长度。但是,当达到极限时,该框就会出现,但是一旦您单击“确定”,该字段就会变为空白。
我也尝试过输入验证规则,但是直到失去焦点后它才触发。
如何防止它杀死已经输入的数据?实际的字段限制要长得多,并且重新键入注释将不会生效。
答案 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个)。
这样,您根本不需要任何代码,并且用户只能输入所需的任意字符。