关键是text1文本框的输入过程,我在其他应用程序中见过很多,都是直接输入如:"19780512",显示"1978-05-12",不可能再按其他按钮的.
我的教材上只有Date()函数"返回系统当前日期",Int()函数"正数取整",不知前面加上"C"什么意思?
既然你要那种类\效果,那你就放在private sub text1_change()里咯.
我那代码只是个参考,具体怎么用你自己抓主意.
Repeat Life=Study;Until (death);
关键是text1文本框的输入过程,我在其他应用程序中见过很多,都是直接输入如:"19780512",显示"1978-05-12",不可能再按其他按钮的.
我的教材上只有Date()函数"返回系统当前日期",Int()函数"正数取整",不知前面加上"C"什么意思?
既然你要那种类\效果,那你就放在private sub text1_change()里咯.
我那代码只是个参考,具体怎么用你自己抓主意.
Const conDateInterval = "/"
Const conDateFormat = "yyyymmdd"
Const conDateFormat1 = "####/##/##"
Private Sub Form_Load()
Text1 = ""
Text2 = 0
Text1.MaxLength = 10
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Text2.SetFocus
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
If KeyAscii <> vbKeyBack And KeyAscii <> 47 And KeyAscii <> 45 Or KeyAscii = vbKeyReturn Then KeyAscii = 0
End If
End Sub
Private Sub Text1_LostFocus()
If IsDate(ChangeDateFormat(Text1)) Then
Text1 = ChangeDateFormat(Text1)
Text2 = DateDiff("yyyy", Text1, Date)
Else
MsgBox "请输入正确的日期格式"
Text1.SetFocus
End If
End Sub
Private Function ChangeDateFormat(ByVal lsInputDate As String) As String
If Len(lsInputDate) >= 8 Then
If Len(lsInputDate) = 8 Then
lsInputDate = Left(lsInputDate, 4) & conDateInterval & Mid(lsInputDate, 5, 2) & conDateInterval & Right(lsInputDate, 2)
End If
If Len(lsInputDate) = 10 Then
If IsDate(lsInputDate) Then
If Format(lsInputDate, conDateFormat) <= Format(Date, conDateFormat) Then
ChangeDateFormat = Format(Format(lsInputDate, conDateFormat), conDateFormat1)
Else
ChangeDateFormat = lsInputDate
End If
Else
ChangeDateFormat = lsInputDate
End If
End If
Else
ChangeDateFormat = lsInputDate
End If
End Function