【エクセルVBA】2022年度版カレンダーを一括作成する方法!

このページでは以下の画像のように、2022年4月~2023年3月までのカレンダーをエクセル上に一発作成する方法をご紹介していきます。

2022年度版年間カレンダーを作成した様子

 

ぜひ資料作成の際などにご活用ください。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

VBAの実行環境を構築しておく

今回はVBAというエクセルにあらかじめ備わっている機能をつかってカレンダー作成を行っていきます。

 

VBAをつかったことがない人は、まずは以下の記事を参考にVBAの実行環境を構築してみましょう。

エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説

 

スポンサーリンク

単月のカレンダーを作成する方法

以前私のブログにて、単月のカレンダーをエクセル上に作成する方法についてご紹介しました。

【エクセルVBA】カレンダーを一発作成する方法!開始曜日、日数指定するだけ!

 

今回は、この単月のカレンダーを作成するスキルを応用して、年間カレンダーを作成していこうと思います。

 

興味があればまずは上の記事からご確認いただければと思います。

 

スポンサーリンク

年間カレンダーを一発作成する方法

それでは、今回の本題である年間カレンダーを一発作成するVBAコードをご紹介していきます。

 

以下がそのサンプルコードです。

Sub make_calendar()
    Dim day_data, start_day As String
    Dim day_number, i As Integer
    '作成領域をクリアする
    Range("A1:CF8").ClearContents
    '曜日データを構築(月からでもOK)
    Week = "日,月,火,水,木,金,土"
    '各月の日数を指定しておく(4月から)うるう年なら変更する
    '       4  5  6  7  8  9  10 11 12 1  2  3
    Days = "30,31,30,31,31,30,31,30,31,31,28,31"
    '開始曜日を指定(4/1の曜日を指定)
    start_day = "金"
    For j = 0 To 11
        '月の総日数を指定
        day_number = Split(Days, ",")(j)
        'カレンダー作成開始
        Cells(1, 1 + j * 7) = (j + 4) Mod 12 & "月"
        For i = 0 To 6
            Cells(2, i + 1 + j * 7) = Split(Week, ",")(i)
            If Split(Week, ",")(i) = start_day Then
                col = i + 1
            End If
        Next
        ddd = 7 - col
        rrr = 3
        i = 1
        Do Until i = day_number + 1
            If i <= ddd + 1 Then
                Cells(rrr, col + j * 7) = i
                i = i + 1
                col = col + 1
                sd = (col - 1) Mod 7
            Else
                ddd = ddd + 7
                col = 1
                rrr = rrr + 1
            End If
        Loop
        start_day = Split(Week, ",")(sd)
        '月ごとに枠線を追加する
        With Range(Cells(2, 1 + j * 7), Cells(8, 1 + j * 7 + 6))
            .Borders.Weight = xlThin
            .BorderAround Weight:=xlMedium
        End With
    Next
End Sub

 

こいつを実行すると冒頭に紹介したように年間カレンダーを一発作成してくれます。

2022年度版年間カレンダーを作成した様子

※このマクロを実行すると上から8行分は強制的に上書きされます。

実行前に大事なデータが残っていないかよくご確認の上、実行してください。

 

スポンサーリンク

カレンダー作成マクロの応用方法

先ほど紹介したマクロはあくまでも2022年度版です。

 

もし2023年度版も作成しておきたい場合は、2023/4/1の曜日である”土”を12行目のstart_dayとして指定すればOKです。

(2023はうるう年ではないので、Daysは変更なしでOKです。)

 

また、先ほどのコードでは、日曜スタートになっていましたが、月曜スタートに変更することも可能です。

Week = “日,月,火,水,木,金,土”の部分を

Week = “月,火,水,木,金,土,日”に変更して実行するだけでOKです。

 

非常に簡単ですね。

 

ぜひいろいろ変更しながら試してもらえればと思います。

 

スポンサーリンク

おわりに

というわけで今回は、エクセルVBAをつかって2022年度版カレンダーを作成する方法をご紹介しました。

ぜひ業務効率化にご活用ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました