数日間のシート(Microsoft Excel)
新しいワークブックを開始するときは、各ワークシートに異なる曜日の名前を付けるのが一般的です。これをかなり行うと、各ワークシートの名前を個別に必要な名前に変更するのが面倒になる可能性があることがわかります。
次のマクロは、これらの状況で役立つように開発されました。ワークブック内のワークシートの名前をチェックし、「シート」の文字で始まる場合は月の日に名前を変更します。ワークブックに十分なシートがない場合は、必要に応じて、その月の各日にシートが追加されます。
Sub DoDays() Dim J As Integer Dim K As Integer Dim sDay As String Dim sTemp As String Dim iTarget As Integer Dim dBasis As Date iTarget = 13 While (iTarget < 1) Or (iTarget > 12) iTarget = Val(InputBox("Numeric month?")) If iTarget = 0 Then Exit Sub Wend Application.ScreenUpdating = False sTemp = Str(iTarget) & "/1/" & Year(Now()) dBasis = CDate(sTemp) For J = 1 To 31 sDay = Format((dBasis + J - 1), "dddd mm-dd-yyyy") If Month(dBasis + J - 1) = iTarget Then If J <= Sheets.Count Then If Left(Sheets(J).Name, 5) = "Sheet" Then Sheets(J).Name = sDay Else Sheets.Add.Move after:=Sheets(Sheets.Count) ActiveSheet.Name = sDay End If Else Sheets.Add.Move after:=Sheets(Sheets.Count) ActiveSheet.Name = sDay End If End If Next J For J = 1 To (Sheets.Count - 1) For K = J + 1 To Sheets.Count If Right(Sheets(J).Name, 10) > _ Right(Sheets(K).Name, 10) Then Sheets(K).Move Before:=Sheets(J) End If Next K Next J Sheets(1).Activate Application.ScreenUpdating = True End Sub
マクロは、ワークシートが必要な月が現在の年であることを前提としていることに注意してください。そうでない場合は、1つの小さな変更を加える必要があります。マクロの先頭近くにある次の行に注意してください。
sTemp = Str(iTarget) & "/1/" & Year(Now())
なんらかの理由で、実際に2015年の月にしたいとします。行を次のように変更するだけです:
sTemp = Str(iTarget) & "/1/2015"
マクロは、「2020年3月28日水曜日」のように、各タブ名を曜日とそれに続く実際の日付に等しく設定します。毎日のタブの名前の付け方を変更したい場合は、マクロでのsDay変数の作成方法を変更するだけです。
マクロの最後のステップは、月の日に基づいて、ワークシートを適切な順序で配置することです。その結果、ワークブックに他のワークシートが残っている場合(つまり、「シート」の文字で始まらないワークシートがある場合、それらのワークシートはワークブックの最後、それぞれのシートの後になります。
Note:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_はあなたです費用対効果の高いMicrosoftExcelトレーニングのソース。
このヒント(11523)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。古いバージョンのこのヒントのバージョンを見つけることができます。 Excelのメニューインターフェイスはこちら:
linkSheets for Days。