エクセルのVBマクロで新しいシートを連番生成

エクセルで新しいシートを連続作成するVBマクロ。

  • エクセルのVBAでシート(sheet)を作成する。
  • エクセルのVBAでシートを任意のシートの後に作成する。
    #引数なしでWorksheets.Addすると一番左に作成されて後で面倒。
  • エクセルのVBAでシート(sheet)のタブ名を設定する。
  • エクセルのVBAであるシートの値を別のシートにコピーする。
Sub CreateNewSheet()
    Dim StrLastSheetName As String
        StrLastSheetName = "最後のシート名(初期値)"

    'Sheetを150個生成する
    For i = 1 To 150
        Dim NewWorkSheet As Worksheet
        Dim strName As String
        
        '新シートを作成。"StrLastSheetName"で指定された
        'シートの後に作成し、それ以降は連続させる。
        Set NewWorkSheet = Worksheets.Add(after:=
        Worksheets(StrLastSheetName))
        
        '新シート名の生成&設定処理。適宜書き換えてください。
        strName = "aaaa" & Trim(Str(i))
        NewWorkSheet.Name = strName
        
        '書式内容をシート"TEMPLATE"からコピー。適宜書き換えてください。
        Sheets("TEMPLATE").Select
        ActiveWindow.SmallScroll Down:=15
        Cells.Select
        Range("A62").Activate
        Selection.Copy
        Sheets(NewWorkSheet.Name).Select
        ActiveSheet.Paste
        
        '文書ID欄にシート名を設定。適宜書き換えてください。
        Range("B3") = strName
        
        '別のシート中の一覧から値をコピーする。適宜書き換えてください。
        Sheets("文書名一覧").Select
        Range("E" & 5 + i).Select
        Selection.Copy
        Sheets(NewWorkSheet.Name).Select
        Range("B4").Select
        ActiveSheet.Paste

        StrLastSheetName = NewWorkSheet.Name
        
    Next

End Sub

#しかしこのカラーリングは最低だな。背景にかぶってコードが読めない。白背景とかにしてほしい。