有没有人有任何关于如何在VBA中循环一个月的例子?
目前我有一个月份值为“十月”的源表。我在工作表中嵌入了一个宏按钮,用于创建一个新工作表,我需要它从当前具有月份值的单元格中获取值并将其放在新工作表中但是一个月前进,即本例中的“十一月”
答案 0 :(得分:4)
您可以创建一个可重用的函数来返回您要查找的内容,也可以尝试使用Month / MonthName函数的组合来获取您要查找的内容。
Function GetNextMonth(Byval currentMonth as string) As string
Select Case currentMonth
Case "January"
GetNextMonth = "February"
Case "February"
GetNextMonth = "March"
Case "March"
GetNextMonth = "April"
Case "April"
GetNextMonth = "May"
Case "May"
GetNextMonth = "June"
Case "June"
GetNextMonth = "July"
Case "July"
GetNextMonth = "August"
Case "August"
GetNextMonth = "September"
Case "September"
GetNextMonth = "October"
Case "October"
GetNextMonth = "November"
Case "November"
GetNextMonth = "December"
Case "December"
GetNextMonth = "January"
End Select
End Function
更短的组合方法:
Function GetNextMonth(ByVal currentMonth as string) As String
GetNextMonth = MonthName(Month(DateValue("01-" & currentMonth & "-2000"))+1)
End Function
使用您当前的月份名称给VBA一个日期,让它转换它,然后从中获取月份数字,添加一个并返回月份名称。但是,您可能需要添加一个检查以查看当前月份是否为12(边缘大小写)。
答案 1 :(得分:4)
作为用户定义的功能
Function NextMonth(m As String) As String
NextMonth = Format(DateAdd("m", 1, DateValue("1 " & m & " 2000")), "mmmm")
End Function
或作为Excel公式(其中D1
包含您要偏移的月份)
=TEXT(EDATE( DATEVALUE("1 " & D1 & " 2000"),1), "mmmm")
答案 2 :(得分:0)
更短的udf,而没有显式的DateAdd
功能
此函数同时接受字符串和数字,因此currMonth
参数可以是“ January”,“ Jan”或1。
Function NextMonth$(currMonth)
NextMonth = Format(CDate(currMonth & "/2 0") + 30, "mmmm")
End Function
注意
因此,CDate
函数将在 1900年1月2日(= year 0)的日期中转换上述输入,可以肯定地通过增加30天(平均月份)达到下个月)。通过参数Format
的{{1}}函数返回下个月的全名,例如mmmm
。