MonthName(月(现在)+ x).....错误13;容易解决?

时间:2015-10-06 14:41:04

标签: excel vba excel-vba

一旦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

3 个答案:

答案 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")

处理年度翻转以及月份翻转