見出し画像

【マクロ(VBA)】Excelのシートを自動で作成

Excelのシート名を1日ずつ1か月分作成したい時があると思います。
この記事では1か月分のシートを1発で作成する方法を紹介します。

「開発」タブの追加

マクロを作成する場合はコードを記述するエディタを開いてそこにコードを記述します。
「開発」タブがない場合は下記手順で追加します。
・「ファイル」→「オプション」→「リボンのユーザー設定」
画面が開けたら「開発」のチェックボックスにチェックを入れて「OK」をクリックします。
すると「開発」タブが追加されていると思います。

エディタを開く

エディタを開く方法は2通りありますが、どっちで開いても同じなので好きな方で開いてください。

開発タブから開く:
「開発」タブの「Visual Basic」をクリック → 「挿入」タブの「標準モジュール」をクリック

ショートカットキーで開く:
「alt + f11」で画面を開いた後 → 「挿入」タブの「標準モジュール」をクリック

マクロ作成

まずはコードを見てみましょう。

Sub MakeSheet()          '①

    Dim i As Long         '②
    Dim ws1 As Worksheet      '②
    Dim ws As Worksheet      '②
    Dim dt As Date         '②
    Dim lastday As Long      '②
    Dim sheetName As String    '②
    
    Set ws1 = Worksheets("temp") '③
    
    dt = Date                            '④
    lastday = Format(DateSerial(Year(dt), Month(dt) + 1, 0),"dd") '④
    
    For i = 1 To lastday      '⑤
        sheetName = i & "日"
        ws1.Copy Before:=ws1
        Set ws = ActiveSheet
        ws.Name = sheetName
    Next
    
End Sub

上記コードについて簡単に解説します。
①:マクロ名を決めます。ここでは「MakeSheet」にしています。
②:このプログラムで使用する変数を宣言しています。(変数名 As 型)
③:1か月分作成するシートのテンプレートとなるシートを変数「ws1」に格納しています。(シート名:temp)
④:現在の月の最終日を変数「lastday」に格納しています。
⑤:For文を使用して1~最終日までの回数処理を繰り返します。
tempシートをコピーした後そのシート名を変数「sheetName」の値で設定しています。

このマクロを実行すると下記のようにシートが作成されます。

マクロの実行ボタンを作成する

マクロの実行ボタンがあればいちいちエディタを開いて実行しなくて済むので操作が楽になります。
作成方法は以下になります。

「開発」タブ → 「挿入」 → フォームコントロールの「ボタン」を選択します。(下記画像の赤枠の所)

ボタンを設定したいシートに好きな大きさで設定します。
すると下記画像が表示されるので使用するマクロ名を選択して「OK」をクリックすればボタンが作成されます。

最後に、ファイルを保存する際は「名前を付けて保存」で「ファイルの種類」を「Excelマクロ有効ブック」に変更して保存します。

1か月分のシートを手作業で作成していたならこれで1クリックで作成できるようになりました。

この記事が気に入ったらサポートをしてみませんか?