Ryan拥有一个Excel工作表,每天需要将其用于3个班次。他每天为每一班次重复制作此工作表的副本。在Ryan看来,如果他有一个宏可以每月一个月每天复制3次主工作表,将工作表命名为“ February 1 Shift 1”,“ February 1 Shift 2”,||||会很有帮助。 |等等。他找不到宏来做这样的事情,并且想知道是否有人可以提供帮助。

实际上,不需要很长时间就可以将其放在一起作为宏。诀窍是要记住,该宏需要在所需月份的每一天将主工作表复制3次。这也意味着宏需要确定一个月中有多少天。知道这一点后,您可以设置两个嵌套的For …​ Next循环来处理实际的创建过程。

Sub CopyShiftSheets()

Dim iDay As Integer     Dim iShift As Integer     Dim iNumDays As Integer     Dim wMaster As Worksheet     Dim sTemp As String

iMonth = 2     ' Set to month desired, 1-12     iCurYear = Year(Now())

iNumDays = Day(DateSerial(iCurYear, iMonth + 1, 0))



Set wMaster = Worksheets("Master") 'change to name of master

For iDay = 1 To iNumDays         For iShift = 1 To 3             sTemp = MonthName(iMonth) & " " & iDay & " Shift " & iShift             wMaster.Copy After:=Sheets(Sheets.Count)

ActiveSheet.Name = sTemp         Next iShift     Next iDay End Sub

请注意,期望的月份(在这种情况下为2月)已分配给iMonth变量,而iCurYear则设置为当前年份。然后计算该月和一年中的天数,并将其存储在iNumDays中。

每天和每个班次都要进行两个For …​ Next循环,复制主工作表并重命名。完成后,您的工作簿将具有正确命名的所有所需工作表。但是,您需要注意,不要在同一个月内两次运行宏。

如果这样做,将产生错误,因为工作簿中将有重复命名的工作表。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13730)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。