在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可以让他的方法工作的一种方式。