使用VBA在Excel中创建每月标签

时间:2018-06-01 07:04:02

标签: excel-vba vba excel

我正在尝试在VBA中编写代码,该代码将使用单元格中的特定日期' B1'并在Excel中创建新选项卡,这将是' B1'中的日期。 +一个月。我是VBA的新手,因此不知道如何编写代码,我将非常感谢您的帮助。到目前为止,我有以下代码,但它只创建一个工作表,而上个月,不会创建未来的工作表,我不知道如何将其链接到现有选项卡中的单元格B1。此外,我希望有一个代码,可以创建未来5年的月度表。以下是我目前的情况:

Private Sub MonthlyUpdate2()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.name = Format(DateAdd("m", -1, Date), "MMM-YY")
    End With
End Sub

2 个答案:

答案 0 :(得分:2)

在创建新工作表之前将var设置为B1中的日期值,以便您可以在命名过程中使用它。

Private Sub MonthlyUpdate2()
    Dim ws As Worksheet, dt as long
    With ThisWorkbook
        dt = activesheet.range("B1").value2
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.name = Format(DateAdd("m", 1, dt), "MMM-YY")
    End With
End Sub

日期只是一个数字,代表自1899年12月31日以来的天数。为此,长整数与日期变量一样合适。另请注意,-1在DateAdd中变为1。

关于B1细胞的实际位置存在一些混淆,所以我使用了ActiveSheet(你可以看到的那个)。这并不总是最好的方法,首选正确定义的父工作表。

答案 1 :(得分:2)

尝试此代码并根据需要调整var nb_month_to_create。我想b1日期在你的第一张纸上,但你可以调整名称“sheet1”

Private Sub MonthlyUpdate2()
    Dim datestart As Date
    datestart = ThisWorkbook.Sheets("Sheet1").Range("B1").Value

    Dim nb_month_to_create As Integer
    nb_month_to_create = 5 * 12 '5 years

  For i = 1 To nb_month_to_create
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = Format(DateAdd("m", i, datestart), "MMM-YY")
    End With
    Next i
End Sub