【问题标题】:How to limit number of characters of form field如何限制表单字段的字符数
【发布时间】:2020-07-15 10:29:50
【问题描述】:

我有一个带有未绑定注释字段的表单,我们想限制其中的字符数。为了使事情尽可能干净,并确认它不是别的东西,我创建了一个带有两个未绑定文本框的新表单。 “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

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

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

如何防止它杀死已经输入的数据?实际的字段限制要长得多,重新输入 cmets 不会飞。

【问题讨论】:

  • 表格中的FieldSize属性可以限制字段接受的字符数。
  • 是的,但它是一个未绑定的文本框。
  • 所以您不打算将此输入保存在任何地方?
  • 哦,不,我肯定会保存输入,但正如我提到的,它是一个注释字段,可能会很长。我不希望有人在输入“战争与和平”后被截断。

标签: vba ms-access


【解决方案1】:

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

改变这一行...

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

...到这个...

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

Left() 赋值表达式更改 Me.Text0.Text 时,该更改保留了前 20 个字符。您的原始代码“杀死已输入的数据”的原因是因为Me.Text0 表示Me.Text0.Value,而不是Me.Text0.Text

【讨论】:

  • HansUp,谢谢你第二次关注我的小姐姐。现在可以按需要工作。我还添加了一个Me.Text0.SelStart = 20,因为它之后将光标放在了行首。
  • 是的,我想过提到.SelStart。在我的,我使用了.SelStart = Len(Me.Text0.Text),但你的更简单。 :-)
【解决方案2】:

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

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

这样,您根本不需要代码,用户只能输入任意数量的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多