宏可根据上一张图纸自动执行下个月和下一年

时间:2019-05-23 06:21:37

标签: excel vba

我正在处理一个宏,该宏负责复制和粘贴隐藏的工作表,在特定的单元格中输入月份和年份(基于上一个工作表中输入的值。我目前在作为该单元格的操作上遇到问题从(包含)一个月和一年中获取(读取)我的数据。到目前为止,我有这段代码(由stackoverflow的一位非常乐于助人的社区成员给我):

NextMonth = Format(DateSerial(Year(Date), Month(DateValue("1/" & Range("A1") & "/" & Year(Date))) + 1, 1), "mmmm")

如果A1仅包含一个月,则代码可以正常工作。尽管该单元格包含“ February 2019”,并将其与上面的公式一起使用以获取三月,但有什么想法可以读入,例如仅“ February”?有了它,我将把月份存储在变量“ A”中,并使用“ B = Year(Now())”将年份存储在另一个变量中。最后,我将其分配给所需的工作表上带有“ = A&B”的单元格

有什么想法吗? 问候, 亚历克斯

注意:对当前(实际)月份不感兴趣。另外,我有代码可以自动执行第一张工作表,其中代码要求用户输入月份和年份。

1 个答案:

答案 0 :(得分:2)

以下代码允许:
1.月号
2.说明的月份
2.以上两点的组合

换句话说,代码将接受以下单元格值

  • “ 2月”和“ 2019年2月”
  • “ 1”和“ 1 2019”
Sub newmonth()
Dim datecell As Range
Dim d As Variant
Dim newdate As Date

Set datecell = Sheet1.Range("D21")

If IsDate(datecell) Then
    d = datecell
Else
    d = datecell & " " & Year(Now())
End If

newdate = DateAdd("m", 1, d)

Debug.Print Format(newdate, "mmmm yyyy")
'Alternatively, you could put this value in another cell
'Sheet2.Range("A1").Value = Format(newdate, "mmmm yyyy")

End Sub

确保对参考进行调整,以使其与您的工作簿配置匹配