月份(月(现在)+ x)…错误13; 容易修复?

month(now) + x => 13我在VBA中使用MonthName得到一个错误。

没有构build出太多的代码,我有一个简单的解决方法,我错过了? 只有我能想到的是在循环内设置一些条件来调整它,所以month(now) + x一旦达到13就回复到1。

也看起来像Year(Now)我也会有一个问题,一旦它超过13,但一次一件事。

码:

 Sub Do_Stuff_Button() expand = 2 MsgBox Day(Now) ActiveSheet.Cells(2, 6) = "'" & MonthName(Month(Now), False) ActiveSheet.Cells(1, 6) = "'" & Year(Now) Do While expand > 0 ActiveSheet.Cells(1, (6 - expand)) = "'" & Year(Now) ActiveSheet.Cells(1, (6 + expand)) = "'" & Year(Now) ActiveSheet.Cells(2, (6 - expand)) = "'" & MonthName((Month(Now) - expand), False) ActiveSheet.Cells(2, (6 + expand)) = "'" & MonthName((Month(Now) + expand), False) expand = expand - 1 Loop End Sub 

你可以使用DateAdd

Debug.Print MonthName(Month(DateAdd("m", 1, Date)))

如果您要将一个数字传递给大于当年剩余月数的函数,那么它会计算下一年的月份。

Debug.Print MonthName(Month(DateAdd("m", 5, Date)))

以上将返回March

您可以使用Mod运算符来检查是否还有剩余的值,然后将其作为月份值传递

 Dim monthVal As Integer If (Month(Now) + x) Mod 12 > 0 Then monthVal = (Month(Now) + x) Mod 12 Else monthVal = Month(Now) + x End If MonthName (monthVal) 

您可以使用格式为MonthName:

 Debug.Print Format(Now(), "mmmm yyyy") Debug.Print Format(DateAdd("m", 1, Now()), "mmmm yyyy") 

交易年份翻转以及月份翻转