我有一个带有未绑定注释字段的表单,我们希望限制其中的字符数。为了使事情尽可能干净,并确认它不是别的东西,我创建了一个带有两个未绑定文本框的新表单。 “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它就会使该字段空白。
我也试图提出一个验证规则但是在失去焦点之前它不会触发。
你如何防止它杀死已输入的数据?实际的字段限制要长得多,并且重新输入注释不会飞。
...当它达到限制时,框出现但是一旦你点击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
您不需要任何代码。只需在文本框中使用输入掩码设置即可。
在输入掩码中,只需键入AAAAA(其中20个)。
这样,您根本不需要代码,用户只能输入任意数量的字符。