Excel VBA是否要添加周工作表?

Excel VBA是否要添加周工作表?,vba,excel,Vba,Excel,场景:我有一个Excel表格,其中有一个(自动生成)日期列表(每月的每一天,周末除外) 这些日期在单元格A2:A32和单元格B2:B32和C2:32中,还有一些额外的细节(它们并不重要) 我还有一个宏,当我单击命令按钮时会激活。宏使用这些日期为每个日期创建新工作表 宏: Private子命令按钮2\u单击() 变暗rng As范围 设置rng=板材(“板材1”)。范围(“A2:A32”) 将工作作为工作表 对于rng中的每个单元 出错时继续下一步 如果单元格的.Value为“”,则 设置wks=

场景:我有一个Excel表格,其中有一个(自动生成)日期列表(每月的每一天,周末除外)

这些日期在单元格
A2:A32
和单元格
B2:B32
C2:32
中,还有一些额外的细节(它们并不重要)

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

宏:

Private子命令按钮2\u单击()
变暗rng As范围
设置rng=板材(“板材1”)。范围(“A2:A32”)
将工作作为工作表
对于rng中的每个单元
出错时继续下一步
如果单元格的.Value为“”,则
设置wks=Sheets.Add(之后:=工作表(Worksheets.Count),类型:=“C:\Users\User1\Desktop\1.xltx”)
wks.Name=cell.Value
wks.Range(“B2”).Value=单元格偏移量(0,1).Value
wks.Range(“B3”).值=单元格偏移量(0,2).值
如果结束
下一个细胞
端接头
问题:如何更改宏,以便在每周五之后,宏生成一张每周总计的工作表(使用另一个模板,并命名为(如果可能)week1、week2等)

如果有帮助的话,B3单元格会将一周中的某一天写在文本中(星期五、星期一……等等)。

您需要考虑“
如果这一天是星期五,是时候创建周报了”

对于周的序列号,有一个名为
WeekNum
WorksheetFunction
命名空间函数,它在输入中获取日期并返回周号

要在代码中说明这一切:

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

您可以在工作簿中添加第二个子项来查找当天的信息。如果当天是星期六(“星期五之后”),则添加带有信息的新工作表。这样行吗?或者你也不知道如何添加一张工作表,并从中获取你想要的信息?此外,您必须打开Excel才能运行此…@BruceWayne我想到了这一点,并试图这样做,但我无法让它正常工作。问题是,它将创建所有具有当月天数的常规工作表,然后创建每周总工作表(它们没有正确放置)。我最终删除了它,因为我在保存文件时遇到了问题。。。你能告诉我怎么做吗?或者至少是一些指导方针?谢谢你的帮助:)你不再有那种代码了,是吗?听起来好像你已经上路了,但是宏放错了位置/顺序错了。要创建宏,我想我们需要更多的信息(比如你想要使用的模板是什么样子的)…也许你可以发布一些样本数据/数据的屏幕截图,以便我们知道你的数据在哪里以及如何求和?@BruceWayne这是日期的样子:(我有一些公式,当我在A1中写月份时会自动填入日期)。该模板是一个会计模板,但它不属于我,因此我没有权限将其发布到web上(抱歉).是的,你一开始所说的听起来像是发生了什么事。很抱歉听起来像个傻瓜,但一个朋友让我这么做,我在今天之前从未使用过这么复杂的宏。@BruceWayne我真的很感谢你的帮助,顺便说一句,你可以忽略B列和C列的数据,我会在以后需要的地方添加它(我至少可以做到这一点)这很神奇!我必须做一些更改:在“If cell.Value=“Friday”之后添加一个,然后修复一些特定于我的文档的其他内容(例如我的“Friday”是另一种语言,右边有几个单元格)…但除此之外,它工作得非常完美,正是我所需要的!非常感谢你(以及所有其他帮助过我的人)!
If WorksheetFunction.WeekNum(cell.Value) < WorksheetFunction.WeekNum(cell.Offset(1,0).Value) Then
'add weekly sheet