У Райана есть рабочий лист Excel, который ему нужно использовать каждый день для каждой из трех смен. Он делает копию этого рабочего листа для каждой смены, каждый день, снова и снова. Райану кажется, что было бы полезно, если бы у него был макрос, который мог бы копировать основной рабочий лист 3 раза каждый день в месяц, называя рабочие листы «1 февраля, смена 1», «1 февраля, смена 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

Обратите внимание, что желаемый месяц (в данном случае февраль) назначается переменной iMonth, а iCurYear установлен на текущий год. Затем рассчитывается количество дней в этом месяце и году и сохраняется в iNumDays.

Два цикла For …​ Next проходят каждый день и каждую смену, копируя основной рабочий лист и переименовывая его. Когда вы закончите, ваша рабочая тетрадь будет иметь все нужные рабочие листы с правильными названиями. Однако следует соблюдать осторожность и не запускать макрос дважды в течение одного месяца.

Если вы это сделаете, будет сгенерирована ошибка, потому что у вас будут рабочие листы с повторяющимися именами в книге.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13730) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.