Excel VBA Userform – 如何增加/减lessdate一个月

使用下面的代码,我使用SpinButtons增加了在TextBox中显示的date的值。

MainUserForm_Initialize() DateTextBox.Value = Format(Date, "dd-mm-YYYY") ... End Sub 'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(DateAdd("d", 1, .Value), "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(DateAdd("d", -1, .Value), "dd-mm-yyyy") End With End Sub 

问题是,如果我将旋转到2015年7月11日,从2015年7月12日到2015年12月6日,而不是2015年7月11日。 这是为什么? (在增加值的时候我有同样的问题,给出的date只是一个例子。)

如果我将区域格式设置为美国,我只有同样的问题。 试试这个修补程序,不pipe你的区域设置如何,

 'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(GetDateFromUK(.Value) + 1, "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(GetDateFromUK(.Value) - 1, "dd-mm-yyyy") End With End Sub Function GetDateFromUK(sDate As String, Optional sSeparator As String = "-") As Date Dim vParts vParts = Split(sDate, sSeparator) GetDateFromUK = DateSerial(vParts(2), vParts(1), vParts(0)) End Function