2016-03-29 44 views
-1

我想顯示一個輸入消息響應,該響應是使用CDate(dd/mm/yyyy)格式化的單元格。爲什麼如果輸入是以dd/mm/yy的形式完成的,代碼不會顯示錯誤信息?該程序接受它,但輸出顯示爲yy/mm/ddVBA中的日期格式不起作用

下面

是我創建的代碼:

Sub inputSettlementDate() 

Dim varInputDate As Variant 
Dim lngERow As Long 


varInputDate = InputBox("Please enter the Settlement Date using this format dd/mm/yyyy.", "Settlement Date") 
If IsDate(varInputDate) Then 
    varInputDate = Format(CDate(varInputDate), "dd/mm/yyyy") 
    Else 
    MsgBox "Please enter a valid date format dd/mm/yyyy" 
End If 

If IsDate(varInputDate) Then 
    lngERow = Range("B" & Rows.Count).End(xlUp).Row + 1 
    Range("B" & lngERow).Value = varInputDate 
End If 
End Sub 

回答

0

您可能希望確保塔B的格式如通用,或者說,它不具有的yy/mm/dd格式。我在空白工作簿中測試了您的代碼,但沒有更改任何內容,並且工作完美無瑕。

+0

嗨...我已經將格式更改爲常規,但仍然相同。在輸入框中,我輸入「24/3/16」而不是「24/3/2016」。我認爲它會顯示錯誤信息,因爲格式不正確。輸出顯示爲「16/03/2024」.. – ArleneJ

+0

好的,首先,我以前沒有回答過。如果輸入dd/mm/yy,IsDate(varInputDate)行仍然會將其作爲有效日期進行計算,然後進入常規處理,而不會顯示錯誤。嘗試使用常規字符串,例如「Hello world」,您將得到錯誤信息。其次,CDate根據系統的區域設置識別日期格式。嘗試刪除。 –

+0

它的工作原理!事實證明,我的(注意:第一個)代碼沒有任何問題。謝謝! – ArleneJ