使用以下代码,我使用SpinButtons增加TextBox中显示的日期值。
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月12日,而不是2015年7月11日。这是为什么? (增加值时我遇到同样的问题。给出的日期只是一个例子。)
答案 0 :(得分:2)
如果我将区域格式设置为美国,我只会遇到同样的问题。尝试此修复程序,无论您的区域设置如何,都应该有效:
'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