Vb6 VB 6.0-格式化文本框“;年月日;
我之前对此提出过一个问题,但我没有表达我真正想要的。我有一个文本框,要求用户在其中写入日期。然后他可以按下一个按钮,根据其他一些文本框上的条目生成一份报告。生成的报告中的日期必须采用“dd/MM/yy”格式,这一点非常重要 我使用以下代码:Vb6 VB 6.0-格式化文本框“;年月日;,vb6,Vb6,我之前对此提出过一个问题,但我没有表达我真正想要的。我有一个文本框,要求用户在其中写入日期。然后他可以按下一个按钮,根据其他一些文本框上的条目生成一份报告。生成的报告中的日期必须采用“dd/MM/yy”格式,这一点非常重要 我使用以下代码: Dim a as String a = Format(Textbox1.text, "dd/MM/yy") 除了用户以这种格式“dd.MM.yy”键入日期(例如15.05.15)外,一切正常。发生这种情况时,生成的报告中的日期始终为“30/12/99”。有
Dim a as String
a = Format(Textbox1.text, "dd/MM/yy")
除了用户以这种格式“dd.MM.yy”键入日期(例如15.05.15)外,一切正常。发生这种情况时,生成的报告中的日期始终为“30/12/99”。有人能帮我理解为什么会这样吗
编辑:关于重复的问题。在上一个问题中,我问如何从文本框中提取字符,并以我想要的格式形成日期。这个问题是关于在文本框(dd.MM.yy)中使用特定类型的格式时发生的一个特定问题,该文本框总是打印特定的日期(1999年12月30日)。30/12/1899是0的日期等价物,这是当您尝试将日期格式不正确的
字符串转换为日期时得到的结果
要验证这一点,请在文本框中键入任何旧垃圾,您将得到30/12/99作为输出
关于使用日期时间选择器
控件,请参阅我对您的其他问题的回答您可以在文本框中选择允许的键
例如:
'1 form with:
' 1 textbox : name=Text1
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
' Caption = CStr(KeyAscii)
KeyAscii = DateOnly(KeyAscii)
End Sub
Private Function DateOnly(intKey As Integer) As Integer
Dim intResult As Integer
intResult = intKey
Select Case intKey
Case vbKeyBack 'allow backspace
Case vbKey0 To vbKey9 'allow numbers
Case 45 'allow -
' Case 46 'change . into /
' intResult = 47
Case 47 'allow /
Case Else 'dont allow anything else
intResult = 0
End Select
DateOnly = intResult
End Function
这只是限制了用户可以输入的键,您仍然需要注意其他无效输入
[编辑]
我在上面的代码中添加了Case 45
在select情况下,指定每个键输入的情况:
- 您可以通过不指定任何内容来保持键不变,就像我对/(ascii值47)所做的那样
- 你可以把钥匙换成另一把钥匙,就像我用钥匙做的那样。(ascii值46)
- 您可以通过将其设置为0来拒绝键输入,就像我对所有其他键(case-else)所做的那样
您可以通过取消对Text1_KeyPress中第一行的注释来找出特定键的ascii值,这样ascii值将显示在标题中。IsDate函数也很有用。这将检查输入的日期是否有效,如果有效,则返回True
IsDate ("21/05/2015") 'returns 'True'
IsDate ("21.05.2015") 'returns 'False'
您可以使用“替换”功能将“.”更改为“/”
可能重复的问题,请不要在几个小时后发布相同的问题。关于重复的问题。在上一个问题中,我问如何从文本框中提取字符,并以我想要的格式形成日期。这个问题是关于在文本框(dd.MM.yy)中使用特定类型的格式时发生的一个特定问题,该文本框总是打印特定的日期(1999年12月30日)。它可能看起来像两个不同的问题,但答案相同-不允许用户输入无效的日期格式,请看我对你的另一个问题的回答。不幸的是,这里没有回答我的问题。我在问为什么会出现99年12月30日而不是键入的日期。使用datetimepicker输入日期而不是文本框,这样你就不必担心格式问题了。谢谢你的回答。这似乎是做我想做的事情的一个很好的方式。你能告诉我如何允许“-”字符吗?我编辑了我的代码示例,添加了“-”字符,并在我的帖子中添加了一个小说明。我搜索了Ascii表,发现了我是如何做到这一点的。为了消除用户使用“/”以外的其他符号的可能性,我将您的代码更改为将每个符号都更改为“/”,现在它工作得非常好。感谢您的输入Hrqls。做得好。。。但要小心,因为用户可能会输入错误的日期,如“31/31/31”或“0/0/0”或“//”或“12/5”或其他任何内容
mydate = Replace("21.05.2015", ".", "/") ' gives "21/05/2015"