一旦month(now) + x => 13
我在VBA中使用MonthName
收到错误。
如果没有构建太多代码,我会错过一个简单的解决方法吗?我唯一能想到的就是在循环中设置一些条件来调整它,这样month(now) + x
一旦达到13就会恢复为1.
看起来,一旦超过13,我也会遇到Year(Now)
的问题,但一次只有一件事。
代码:
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
答案 0 :(得分:3)
您可以使用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)
答案 1 :(得分:3)
您可以使用DateAdd
。
Debug.Print MonthName(Month(DateAdd("m", 1, Date)))
如果您要将一个数字传递给该函数,该数字大于当前年份的剩余月数,那么它将计算持续到下一年的月份。
示例强>
Debug.Print MonthName(Month(DateAdd("m", 5, Date)))
以上内容将返回March
。
答案 2 :(得分:0)
您可以使用MonthName格式:
Debug.Print Format(Now(), "mmmm yyyy")
Debug.Print Format(DateAdd("m", 1, Now()), "mmmm yyyy")
处理年度翻转以及月份翻转