ライアンは、毎日3シフトごとに使用する必要のあるExcelワークシートを持っています。彼は、シフトごとに、毎日、何度もこのワークシートのコピーを作成します。ライアンは、マスターワークシートを1か月に1日3回コピーして、ワークシートに「2月1日シフト1」、「2月1日シフト2」という名前を付けることができるマクロがあれば便利だと思われます

など。彼はこのようなことをするためのマクロを見つけることができず、誰かが助けてくれるかどうか疑問に思っていました。

これは、実際にはマクロとしてまとめるのにそれほど時間はかかりません。秘訣は、マクロがマスターワークシートを目的の月の1日3回コピーする必要があることを覚えておくことです。これは、マクロが1か月の日数を決定する必要があることも意味します。これがわかったら、実際の作成プロセスを処理するために、ネストされた2つの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に格納されます。

2つのFor …​ Nextループは、毎日および各シフトを通過し、マスターワークシートをコピーして名前を変更します。完了すると、ワークブックに必要なすべてのワークシートが正しく名前が付けられます。ただし、同じ月にマクロを2回実行しないように注意する必要があります。

これを行うと、ワークブックに重複した名前のワークシートがあるため、エラーが生成されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13730)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。