在activex文本框VBA中将日期格式设置为dd-mmm-yyyy

时间:2015-05-26 07:54:55

标签: excel vba excel-vba access-vba

有没有办法在ActiveX TextBox中将日期格式设置为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

1 个答案:

答案 0 :(得分:2)

我是否可以建议你采用不同的方法做一些事情(注意这是未经测试的,而不是最终的代码,只是一些建议,如何处理这个):

Private Sub Textbox1_LostFocus()
  Dim Da as Date
  Da = CDate(Textbox1.Text)
  Textbox1.Text = Format(Da, "dd-mmm-yyyy")
End Sub

这将:

  • 当用户点击活动框外部时输入任何文本(LostFocus,而不是按每次按键运行)
  • 将值转换为日期
  • 以您需要的格式重新放回文本框(dd-mmm-yyyy)

然后,您可以在此处添加错误处理,以便如果vba无法将其转换为日期,则可以向用户报告他们输入的值不正确并在继续之前进行更正。

我也不是主张这是最佳做法,而是OP可以让他的方法发挥作用的方式。