格式化邮政编码的文本框&邮政编码

时间:2013-11-04 16:22:06

标签: sql vba ms-access access-vba

我有一个文本框,用户可以输入邮政编码或邮政编码;虽然我们知道,每个人都彼此不同 (邮政编码可以是A1B2C3,邮政编码可以是12345)

如果将代码放在文本框中,如果它是文本,它会自动将输入大写,并且不让它们放置空格,我将如何制作它?

我尝试过使用蒙版,但它限制了他们可以输入的字符数量,每个字符都有不同的数量,因此不起作用。

2 个答案:

答案 0 :(得分:2)

  

我尝试过使用蒙版,但它限制了他们可以输入的字符数量,每个字符都有不同的数量,因此不起作用。

您不一定只需要一个输入掩码。您可以安排表单,以便在邮政编码之前输入国家/地区,然后相应地调整输入掩码。例如,如果您为Country使用组合框,那么它可能具有After Update事件处理程序,如

Private Sub cbxCountry_AfterUpdate()
    Dim strMask As String
    strMask = ""
    If Not IsNull(Me.cbxCountry.Value) Then
        Select Case Me.cbxCountry.Value
            Case "Canada"
                strMask = ">L0L 0L0"
            Case "U.S.A."
                strMask = "00000-9999"
        End Select
    End If
    Me.txtPostalCode.InputMask = strMask
End Sub

这些东西可能会有点挑剔,但最终可能会给你提供比“一刀切”方法更好的结果。

..和加拿大邮政编码有空格,但看看你的个人资料我很确定你知道......;)

答案 1 :(得分:1)

您可以通过处理文本框的KeyDown和KeyPress事件来纯粹在UI级别执行此操作:

Private Sub txtPostCode_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeySpace Then KeyCode = 0
End Sub

Private Sub txtPostCode_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case Asc("a") To Asc("z")
      KeyAscii = KeyAscii + Asc("A") - Asc("a")
  End Select
End Sub