猿问

在VBA文本框中格式化MM/DD/YYYY日期

在VBA文本框中格式化MM/DD/YYYY日期

我正在寻找一种将VBA文本框中的日期自动格式化为MM/DD/YYYY格式的方法,我希望它在用户输入时格式化。例如,一旦用户输入第二个数字,程序将自动输入“/”。现在,我使用以下代码完成了这个工作(以及第二个破折号):

Private Sub txtBoxBDayHim_Change()
    If txtBoxBDayHim.TextLength = 2 or txtBoxBDayHim.TextLength = 5 then
    txtBoxBDayHim.Text = txtBoxBDayHim.Text + "/"End Sub

现在,这在打字时效果很好。然而,当尝试删除时,它仍然进入破折号,因此用户不可能删除其中一个破折号(删除一个破折号会导致长度为2或5,然后再运行,添加另一个破折号)。有什么更好的方法吗?


GCT1015
浏览 2642回答 3
3回答

郎朗坤

添加一些跟踪长度的内容,并允许您对用户是否添加或减去文本进行“检查”。这是目前尚未测试,但类似的东西应该可以工作(特别是如果你有一个用户表单)。'add this to your userform or make it a static variable if it is not part of a userformprivate oldLength as integerPrivate  Sub txtBoxBDayHim_Change()     if ( oldlength > txboxbdayhim.textlength ) then         oldlength =txtBoxBDayHim.textlength        exit sub     end if     If txtBoxBDayHim.TextLength = 2 or txtBoxBDayHim.TextLength = 5 then     txtBoxBDayHim.Text = txtBoxBDayHim.Text + "/"     end if     oldlength =txtBoxBDayHim.textlengthEnd Sub
随时随地看视频慕课网APP
我要回答