Excel VBA Userform - 如何将日期增加/减少一个月

时间:2015-07-23 12:47:44

标签: excel excel-vba userform vba

使用以下代码,我使用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日。这是为什么? (增加值时我遇到同样的问题。给出的日期只是一个例子。)

1 个答案:

答案 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