为什么Excel VBA会在格式化时更改我的日期年份?

时间:2015-09-22 16:42:25

标签: excel vba excel-vba date formatting

我尝试将日期变量格式设置为"mmm-yy,",但是当日期为2016时,格式化后,日期会更改为2015.这是我的代码:

(结果是输入框的字符串结果,该框请求用户以mmm-yy形式输入日期,并且在此代码之前有一个测试,以确保作为第四个字符有一个hypen 。

其他验证测试发生在此代码之后,因为我发现必须将字符串格式化为日期才能使测试起作用。)

        result2 = result
        result2 = Format(result2, "mmm-yy")

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果输入框产生的值将设置为等于具有日期类型的变量的值,则让用户在程序理解时输入日期(例如mm / dd / yyyy)。

如果由于某种原因,用户必须以“mmm-yy”格式输入日期,请​​将输入设置为等于字符串变量的值,然后使用[Month *] = Left解析变量([result] ,3)和[年] =“20”&右([结果],2)。然后,您必须构建日期,以便可以将其设置为类型为date的新变量以放入Format函数。

*当然,您必须有一些关键词将“Jan”,“Feb”,“Mar”等翻译成值01,02,03等。

以下为我正确测试:

Public Sub UserDateEntry()

Dim strUserEntry As String
Dim intMonth As Integer, intYear As Integer

strUserEntry = InputBox("Enter month & year in ""mmm-yy"" format.", "Date Entry", "Sep-16")

intMonth = Month(DateValue("01 " & Left(strUserEntry, 3) & " 2012"))
intYear = 20 & Right(strUserEntry, 2)

Application.Range("DateLoc").Value = Format(intMonth & " 01 " & intYear, "mm/dd/yyyy")

End Sub