Excel VBA添加每周工作表?

时间:2015-07-24 17:40:38

标签: excel vba excel-vba

情景:我有一张Excel工作表,其中包含(自动生成)日期列表(本月的每一天,周末除外)。

这些日期位于单元格x = eval('y = function() {}')中,单元格A2:A32B2:B32中有一些额外的详细信息(这些信息非常重要)。

我还有一个在单击命令按钮时激活的宏。宏使用这些日期为每个日期创建新工作表。

宏:

 
C2:32

问题:如何更改宏以便在每个星期五之后,宏会生成每周总计的工作表(使用另一个模板并命名(如果可能)第1周,第2周,等等)。

如果有帮助,单元格B3将以文本(星期五,星期一等)写出星期几。

1 个答案:

答案 0 :(得分:2)

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

对于一周的序列号,有一个名为WorksheetFunction的{​​{1}}命名空间函数,它在输入中记录日期并返回周数。

在你的代码中说出这一切:

WeekNum

P.S。一个更现实的说明。如果据我所知,这些都是工作日,那么说“如果是星期五那么每周”就有点冒险了。如果那周在周四和周五结束是银行假日怎么办?同样,你甚至不能想“如果下一个星期一”,可能会出现同样的问题。

因此,不要依赖于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 上写的内容,我会用周刊进行检查:

Range("B")