簡體   English   中英

Excel VBA Userform-如何將日期增加/減少一個月

[英]Excel VBA Userform - How to increase/decrease date by one month

使用以下代碼,使用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年11月7日,它將從2015年12月7日到2015年12月6日,而不是2015年11月7日。 這是為什么? (增加值時,我有同樣的問題。給出的日期只是一個例子。)

如果將區域格式設置為美國,我只會遇到相同的問題。 嘗試此修復程序,無論您的區域設置如何,該修復程序都將起作用:

'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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM