如果我的代码未采用IsDate
格式,则该站点的崩溃。我需要一个循环来继续要求输入IsDate
。
可以将以下内容放入直到循环吗?
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Text) Then
MsgBox "Date required"
Cancel = True
End If
'Display value in another textbox for testing purposes
TextBox2.Text = Format(CDate(TextBox1.Text), "dd/mm/yyyy")
End Sub
不熟悉循环语法。
一直循环直到输入IsDate
。
答案 0 :(得分:0)
我需要一个循环来继续要求输入
IsDate
。
由于您正在使用TextBox1_Exit
事件,因此您实际上并不需要一个循环来继续询问用户是否输入有效日期。实际上,只要用户尝试离开TextBox1
,它就会这样做。
您的代码存在的问题是,即使您设置了Cancel = True
,您仍然可以到达设置TextBox2.Text
的行,因为Cancel = True
不会自动退出Sub。您需要做的是要么在Cancel = True
之后立即退出Sub,要么将下一行放在Else
分支中。
您可以使用类似这样的内容:
If Not IsDate(TextBox1.Text) Then
MsgBox "Date required"
Cancel = True
Exit Sub
End If
'Display value in another textbox for testing purposes
TextBox2.Text = Format(CDate(TextBox1.Text), "dd/mm/yyyy")
或者这个:
If Not IsDate(TextBox1.Text) Then
MsgBox "Date required"
Cancel = True
Else
'Display value in another textbox for testing purposes
TextBox2.Text = Format(CDate(TextBox1.Text), "dd/mm/yyyy")
End If