2016-11-16 85 views
2

我對VBA相對來說比較新,而且我需要一些幫助來編寫我一直在寫的代碼。目前,它看起來像這樣:VBA日期保留爲美國版

Sub RoundedRectangle1_Click() 
Selection.NumberFormat = "dd mmm yy" 
Range("H2").ClearContents 
Dim Date1 As ValueChange 
Range("H2").Value = InputBox("Enter the first date (Monday) of the week you wish to view, in the format DD/MM") 
End Sub 

正如你所看到的,我已經爲用戶手動輸入日期的彈出框,但出於某種原因,一旦這個進入它不斷提供一個答案美國格式,例如如果我輸入04/12,這將顯示爲「04年4月12日」,而不是「04年12月4日」

+0

爲什麼不使用[日期選擇器?(http://stackoverflow.com/questions/13409653/how-to-add-date-picker-to-vba-用戶表格) – SBF

+0

寫入04/12/16,它會正確顯示? – Vityata

+0

@Vityata不幸的是不起作用。 – CBooth

回答

0

根據我的測試,InputBox返回string。我會做什麼,是寫下面的函數(只是演示,在此代碼處理沒有錯誤):

Private Function ParseDate(sInput As String) As Date 
    Dim sTmp() As String 
    sTmp = Split(sInput, "/") 

    ParseDate = DateTime.DateSerial(2016, sTmp(1), sTmp(0)) 
End Function 

,然後簡單地這樣稱呼它:

Dim sResult As String 
sResult = InputBox("Enter the first date (Monday) of the week you wish to view, in the format DD/MM") 
Range("H2").Value = ParseDate(sResult) 
+0

可能值得用'Year(Date())'替換DateSerial中的'2016'來保留當前年份。 –

+0

當然,但這就是爲什麼我說這只是一個演示:) –

+0

不幸的是,沒有任何運氣,或者@ DarrenBartrup-Cook - 證明一個令人沮喪的任務.. – CBooth

0

這個宏,它要求對在出席者名單上印製的日期在21世紀以dd/mm/yy或dd/mm表示。可以很容易地適合於包括20%的

Sub Print_Register() 
' 
' Print_Register Macro 
Dim MeetingDate, Answer 

    Sheets("Register").Select 
    Range("A1").Select 
GetDate: 
    MeetingDate = DateValue(InputBox("Enter the date of the meeting." & Chr(13) & _ 
    "Note Format" & Chr(13) & "Format DD/MM/YY or DD/MM", "Meeting Date", , 10000, 10000)) 
    If MeetingDate = "" Then GoTo TheEnd 
    If MeetingDate < 36526 Then MeetingDate = MeetingDate + 36525 'If no yy add year 2000 
    Range("Current_Meeting_Date") = MeetingDate 
    Answer = MsgBox("Date OK?", 3) 
    If Answer = 2 Then GoTo TheEnd 
    If Answer = 7 Then GoTo GetDate 
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" 
TheEnd: 
End Sub 
相關問題