シート全部にマクロを実行
マクロ講座74回
すべてのシートにマクロを実行する Excel2013 マクロ講座 74回
シート全部の日付を和暦に変換
Excelのブックですべてのシートにマクロを実行する方法を日付を和暦に変更する例で紹介します。
(サンプルファイルは、こちらから マクロ74回サンプルデータ)
西暦を和暦に変換する
次のような売上表が記載された複数シートがあります。
まずActiveSheetの日付が入力されている範囲に対して西暦を和暦に変更することを考えましょう。
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
上記マクロを実行すると、下図のように、日付が和暦に変わりました。
すべてのシートに同じマクロを実行
今度はすべてのシートにマクロを実行する方法を考えましょう。すべてのシートに同じマクロを実行するということは、アクティブシートに対して処理を連続させるということになります。
該当シートをアクティブにしながら処理を実行するために、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ステートメントで呼び出すマクロ名を変更することで、汎用的な使い方ができます。
日付を西暦に変更するマクロを作成し、マクロ「すべてのシートでマクロ実行」の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ステートメントを使いました。
お疲れ様でした。