シート全部にマクロを実行

マクロ講座74回 
シート全部にマクロを実行

すべてのシートにマクロを実行する Excel2013 マクロ講座 74回

シート全部の日付を和暦に変換

Excelのブックですべてのシートにマクロを実行する方法を日付を和暦に変更する例で紹介します。


(サンプルファイルは、こちらから マクロ74回サンプルデータ

西暦を和暦に変換する

次のような売上表が記載された複数シートがあります。 まずActiveSheetの日付が入力されている範囲に対して西暦を和暦に変更することを考えましょう。
すべてのシートにマクロを実行するマクロ1
Sub 日付表示を和暦に()
    Range("A3:A11").NumberFormatLocal = "ggge/m/d"
End Sub
常に複数ブックを開い作業している場合など、対象外のブックにマクロが実行されないようにするには、 「ThisWorkbook」を指定して、マクロが記載されている自ブックをアクティブにすると良いです。
Sub 日付表示を和暦に2()
    ThisWorkbook.Worksheets("Sheet1").Activate
    ActiveSheet.Range("A3:A11").NumberFormatLocal = "ggge/m/d"
End Sub
上記マクロを実行すると、下図のように、日付が和暦に変わりました。
すべてのシートにマクロを実行するマクロ2

すべてのシートに同じマクロを実行

今度はすべてのシートにマクロを実行する方法を考えましょう。すべてのシートに同じマクロを実行するということは、アクティブシートに対して処理を連続させるということになります。 該当シートをアクティブにしながら処理を実行するために、For Each~Nextステートメントを使います。
For Each~Nextステートメントは以下の用に使います。
構文
変数は、Worksheet(シート)で、操作対象はWorksheets(シート全体)になります。実行したい処理は、シートをSelectし、マクロを実行することです。 マクロは、Callステートメントで呼び出し実行することができます。
Sub すべてのシートでマクロ実行()
Application.ScreenUpdating = False '画面がちらつかないように記載
  Dim シート As Worksheet
      For Each シート In Worksheets
          シート.Select
          Call 日付表示を和暦に ' Callステートメントでマクロを呼び出す
      Next シート
Application.ScreenUpdating = True
End Sub
マクロを実行すると、下図のようにSheet1,Sheet2の日付が和暦に変更されます。このマクロコードは、Callステートメントで呼び出すマクロ名を変更することで、汎用的な使い方ができます。
すべてのシートにマクロを実行するマクロ3
日付を西暦に変更するマクロを作成し、マクロ「すべてのシートでマクロ実行」のCallステートメントで呼び出してやれば、和暦の日付を西暦に戻すのも簡単です。
Sub 日付表示を西暦に()
    Range("A3:A11").NumberFormatLocal = "YYYY/MM/DD"
End Sub

列全体を対象にする

日付の表示を変更する対象のセル範囲を限定できない場合には、列番号を指定します。サンプルでは日付は1列目なのでColumns(1)または Columns("A")
Sub マクロ2()
    Columns(1).NumberFormatLocal = "ggge年m月d日"
End Sub
あるいはセル「A3」の列ならば、Range("A3")EntireColumnでも列Aを選択して処理を実行できます。
Sub マクロ3()
    Range("A3").EntireColumn.NumberFormatLocal = "YYYY/MM/DD"
End Sub
今回は、すべてのシートに同じマクロを実行するマクロを紹介しました。 すべてのシートを選択するために、For Each~Nextステートメントを使いました。 お疲れ様でした。