Excel VBA添加每周工作表?

scheme:我有一个Excel表单,它具有(自动生成的)date列表(每个月除周末外)。

这些date在单元格A2:A32和单元格B2:B32C2:32有一些额外的细节(这不是很重要)。

我也有一个macros,当我点击一个命令button时激活。 macros使用这些date为每个date创build一个新工作表。

macros:

 Private Sub CommandButton2_Click() Dim rng As Range Set rng = Sheets("Sheet1").Range("A2:A32") Dim wks As Worksheet For Each cell In rng On Error Resume Next If cell.Value <> "" Then Set wks = Sheets.Add(After:=Worksheets(Worksheets.Count), Type:="C:\Users\User1\Desktop\1.xltx") wks.Name = cell.Value wks.Range("B2").Value = cell.Offset(0, 1).Value wks.Range("B3").Value = cell.Offset(0, 2).Value End If Next cell End Sub 

问题:如何更改macros,以便在每周五之后,macros制作每周总数(使用另一个模板并命名为week1,week2等)(如果可能)的工作表。

如果有帮助的话,B3单元格会在星期五,星期一等文本中写入星期几。

你需要考虑“ If the day is Friday, it's time to create the weekly sheet"

对于一周的序列号,有一个名为WeekNumWorksheetFunction名称空间的WeekNum ,它在input中input一个date,并返回星期数。

在你的代码中说这一切:

 For Each cell In rng On Error Resume Next If cell.Value <> "" Then Set wks = Sheets.Add(After:=Worksheets(Worksheets.Count), Type:="C:\Users\User1\Desktop\1.xltx") wks.Name = cell.Value wks.Range("B2").Value = cell.Offset(0, 1).Value wks.Range("B3").Value = cell.Offset(0, 2).Value If cell.Value = "Friday" '<-- new code Set weekly = Sheets.Add(After:=Worksheets(Worksheets.Count),Type="your template") weekly.Name = "Week" + WorksheetFunction.WeekNum(cell.Value) End If '<-- end new code End If Next cell 

Ps更现实的说明。 如果按照我的理解这些是工作日,那么说“如果是星期五然后是每周”是有点冒险的。 如果这周在星期四和星期五结束,是银行假期呢? 而且,你甚至不能认为“如果下一个星期一”,可能会有同样的问题。

因此,不要依赖于Range("B") ,我会检查weeknum:

 If WorksheetFunction.WeekNum(cell.Value) < WorksheetFunction.WeekNum(cell.Offset(1,0).Value) Then 'add weekly sheet