我正在尝试在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
答案 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