在文本框VBA中仅允许数字和斜杠

时间:2018-10-16 08:57:58

标签: excel vba textbox userform

以下代码仅允许在TextBox1中键入数字。但是TextBox1用于插入历史记录(日期),我想使用格式“ 0000/00/00”。如何从错误消息中的IsNumeric中排除“ /”?

Private Sub textbox1_Change()
If Not IsNumeric(TextBox1.Value) Then
   MsgBox "only numbers allowed"
   With TextBox1
  .SetFocus
  .SelStart = 0
  .SelLength = Len(.Text)
   End With
End If
Dim strTemp As String
If TextBox1.TextLength = 8 Then
  Me.TextBox1.Value = Format(Me.TextBox1.Value, "0000/00/00")
End If
End Sub

1 个答案:

答案 0 :(得分:0)

使用KeyPressKeyDown事件(可能更容易使用KeyPress)来管理可以添加哪些字符。

在上述情况下,您必须根据字段中字符串的长度来控制字符范围。

  • 第一个字符必须为数字(检查从09的ASCII)
  • 第二个字符可以是数字或\
  • 如果第二个字符是数字,则为它们附加一个\

此模式重复到下一个数字块。最后一位数字可以是2位或4位数字。

编辑:我的区块与OP的排列顺序相反。如上所述,第一个块只能接受4位数字,后跟\和其他两位数字块。但是概念仍然相同,使用Key*事件来控制可以基于TextBox中已有的字符串输入的内容。

除非字符串完整,否则不要启用“确定”按钮。这意味着直到第三个数字块才出现,只有在第二个数字块中有2或4个数字时才表示。

始终启用“取消”(Cancel)按钮,以便他们可以随时退出。上述方法不能保证有效的日期(如果需要的话),因此在启用“确定”按钮之前,需要进行其他检查。

使用上述方法,并且不允许用户接受无效数字,这意味着更少的错误检查机会!

当然,您也可以使用DateTimePicker!