在activex文本框VBA中设置date格式为dd-mmm-yyyy
有没有办法在ActiveX TextBox中设置date格式为dd-mmm-yyyy
?
我使用下面的代码来分隔报价,但是在用户放置月份的时候有一个错误,也就是说,1993年5月31日,但有时用户正在把2015年5月31日。
由于无法通过服务器获取数据…
Private Sub TextBox1_Change() If TextBox1.TextLength = 2 Or TextBox1.TextLength = 6 Then TextBox1.Text = TextBox1.Text + "-" End If End Sub
我可以build议你采取不同的方法,做这样的事情(注意,这是未经testing的,而不是最终的代码只是几个build议,如何处理这个问题):
Private Sub Textbox1_LostFocus() Dim Da as Date Da = CDate(Textbox1.Text) Textbox1.Text = Format(Da, "dd-mmm-yyyy") End Sub
这会:
- 当用户点击活动框外的任何文本(LostFocus,而不是运行每个按键)
- 将该值转换为date
- 以您需要的格式放回文本框(dd-mmm-yyyy)
然后你可以在这里添加error handling,这样如果vba不能将其转换为date,它可以向用户报告他们input了一个不正确的值并在继续之前纠正它。
我也不是主张这是最好的做法,而是OP可以让他的方法工作的一种方式。