一旦month(now) + x => 13,我就会在VBA中使用MonthName时出错。
没有构建出更多的代码,我错过了一个简单的解决方法吗?我唯一能想到的就是在循环中设置一些条件来调整它,这样一旦达到13,month(now) + x就会恢复到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发布于 2015-10-06 14:54:24
您可以使用DateAdd。
Debug.Print MonthName(Month(DateAdd("m", 1, Date)))
如果要将一个数字传递到函数中,它要大于当前年中剩余的月份数,那么它将计算持续到下一年的月份。
示例
Debug.Print MonthName(Month(DateAdd("m", 5, Date)))
以上内容将返回March。
发布于 2015-10-06 14:49:04
您可以使用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)发布于 2015-10-06 15:10:26
您可以使用MonthName格式:
Debug.Print Format(Now(), "mmmm yyyy")
Debug.Print Format(DateAdd("m", 1, Now()), "mmmm yyyy")处理年展期和月展期
https://stackoverflow.com/questions/32972830
复制相似问题