首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonthName(月(现)+ x) .13错误;容易修复?

MonthName(月(现)+ x) .13错误;容易修复?
EN

Stack Overflow用户
提问于 2015-10-06 14:41:03
回答 3查看 427关注 0票数 2

一旦month(now) + x => 13,我就会在VBA中使用MonthName时出错。

没有构建出更多的代码,我错过了一个简单的解决方法吗?我唯一能想到的就是在循环中设置一些条件来调整它,这样一旦达到13,month(now) + x就会恢复到1。

同样,一旦Year(Now)超过13,我也会遇到问题,但每次都是一件事。

代码:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-06 14:54:24

您可以使用DateAdd

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

如果要将一个数字传递到函数中,它要大于当前年中剩余的月份数,那么它将计算持续到下一年的月份。

示例

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

以上内容将返回March

票数 3
EN

Stack Overflow用户

发布于 2015-10-06 14:49:04

您可以使用Mod运算符来检查是否还存在任何值,然后将其作为月份值传递。

代码语言:javascript
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2015-10-06 15:10:26

您可以使用MonthName格式:

代码语言:javascript
复制
Debug.Print Format(Now(), "mmmm yyyy")
Debug.Print Format(DateAdd("m", 1, Now()), "mmmm yyyy")

处理年展期和月展期

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32972830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档