2016-03-29 42 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