【エクセルVBA】2023年度の年間カレンダーを一発作成する方法

こんにちは、ヒガシです。

 

今回はエクセルVBAを使って、以下の画像のように2023年度の年間カレンダーを一発作成する方法をご紹介していこうと思います。

2023年度の年間カレンダーの作成例

 

基本的には後で紹介するVBAコードをあなたの環境に張り付けて実行するだけでOKです。

 

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

 

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

 

スポンサーリンク

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

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

 

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

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

 

スポンサーリンク

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

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

 

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

Sub make_calendar_2023()
    Dim day_data As String, start_day As String
    Dim day_number As Integer, 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,29,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

 

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

2023年度の年間カレンダーの作成例

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

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

 

スポンサーリンク

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

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

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

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

 

非常に簡単ですね。

 

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

 

スポンサーリンク

おわりに

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

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

 

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

ぜひ他の記事ものぞいてみてください。

 

それではまた!

コメント

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