Excelで2023年年間カレンダーを一瞬で作る方法!書式変更も一括で!

Excelで2023年年間カレンダーを一瞬で作る方法!書式変更も一括で!

Excelで2023年の年間カレンダーを作成したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelで2023年の年間カレンダーを作成したいが一つ一つ作成するのは面倒
・ExcelVBAで2023年の年間カレンダーを作成したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・Excel VBAで2023年の年間カレンダーを一瞬で作成する方法
・Excel VBAで2023年の年間カレンダー書式変更した上で作成する方法

についてまとめます!

Excel VBAで2023年の年間カレンダーを一瞬で作成するイメージ

Excel VBAで2023年の年間カレンダーを一瞬で作成するイメージについて説明をします。

Excelファイルを新規作成します。

VBAを実行すると、

1年分の月間カレンダーが自動作成されシート単位で挿入されていきます!

さらにVBAの数値の設定だけで、

カレンダーの書式を変更することができます!

それでは早速試してみましょう。

タカヒロ
タカヒロ
手動でカレンダーを作ることは大変ですが、このVBAを使えば一瞬でつくれますし、デザインもかんたんに変えられますのでとても重宝するかと思います。

Excel VBAで2023年の年間カレンダーを一瞬で作成する方法

Excel VBAで2023年の年間カレンダーを一瞬で作成する方法について説明をします。

Excelファイルを用意する

Excelファイルを作成し適当なディレクトリに保存します。

タカヒロ
タカヒロ
保存する場合はマクロを動かすことができるXLSM形式でお願いします。

VBAコード

VBAのサンプルコードは以下の通りです。

Sub 年間カレンダーを作成する_日曜日始まり()
    Dim objWs As Worksheet
    Dim intMonth As Integer
    Dim intYear As Integer
    
    '年を指定します。
    intYear = 2023

    '作りたい月の範囲を指定し、カレンダーを作成していきます。
    For intMonth = 1 To 12
        
        'ワークシートを追加します。
        Set objWs = Worksheets.Add
        'ワークシートの名前を年月に変更します。
        objWs.Name = intYear & "年" & intMonth & "月"
        
        'カレンダー作成プロシージャを呼び出します。
        Call 月間カレンダーを作成(objWs, intMonth, intYear)
    Next intMonth
    
    'オブジェクトを開放します。
    Set objWs = Nothing
End Sub

Sub 月間カレンダーを作成(objWs As Worksheet, intMonth As Integer, intYear As Integer)

    Dim startintDay As Integer
    Dim numintDays As Integer
    Dim intDay As Integer
    Dim intRow As Integer
    Dim intCol As Integer
    Dim intSunThemeColor As Integer
    Dim intHeiThemeColor As Integer
    Dim intSatThemeColor As Integer

    'カレンダーの項目に入れる値を指定します。
    objWs.Cells(3, 1).Value = "日"
    objWs.Cells(3, 2).Value = "月"
    objWs.Cells(3, 3).Value = "火"
    objWs.Cells(3, 4).Value = "水"
    objWs.Cells(3, 5).Value = "木"
    objWs.Cells(3, 6).Value = "金"
    objWs.Cells(3, 7).Value = "土"
    
    
'カレンダー表のスタイルを指定します。 ---ここから
    'https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlthemecolor
    
    '日曜日のテーマカラーを指定します。
    intSunThemeColor = 6
    '平日のテーマカラーを指定します。
    intHeiThemeColor = 5
    '土曜日のテーマカラーを指定します。
    intSatThemeColor = 10
    
    
    '日曜日の項目の背景を設定。
    With Range("A3").Interior
        .ThemeColor = intSunThemeColor
    End With

    '平日の項目の背景を設定。
    With objWs.Range("B3:F3").Interior
        .ThemeColor = intHeiThemeColor
    End With
    
    '土曜日の項目の背景を設定。
    With objWs.Range("G3").Interior
        .ThemeColor = intSatThemeColor
    End With
    
    '項目行全体を設定。太字、センタリングなど。
    With objWs.Rows("3:3")
        .Font.ThemeColor = 1
        .Font.Bold = True
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    
    '日付欄全体を設定。罫線、センタリングなど。
    With Range("A3:G9")
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    
    '日曜日の欄の書式を設定。
    With objWs.Range("A4:A9")
        .Interior.Pattern = xlSolid
        .Interior.ThemeColor = intSunThemeColor
        .Interior.TintAndShade = 0.9
        .Font.ThemeColor = intSunThemeColor
    End With

    '土曜日の欄の書式を設定。
    With objWs.Range("G4:G9")
        .Interior.Pattern = xlSolid
        .Interior.ThemeColor = intSatThemeColor
        .Interior.TintAndShade = 0.9
        .Font.ThemeColor = intSatThemeColor
    End With
'カレンダー表のスタイルを指定します。 ---ここまで
 
 
    '月初の曜日位置を取得します。
    startDay = Weekday(DateSerial(intYear, intMonth, 1))
    
    '月末日を取得します。
    numDays = Format(DateSerial(intYear, intMonth + 1, 0), "d")
    
    '入力開始日を指定します。
    intDay = 1
    
    '開始行数を指定します。
    intRow = 4
    
    '月初の曜日の位置を指定します。
    intCol = startDay


    '月あたりの日数分処理を繰り返します。
    While intDay <= numDays
        objWs.Cells(intRow, intCol).Value = intDay
        
        '土曜日の位置の場合、一行下にずれます。それ以外は横に日付を入れていきます。
        If intCol = 7 Then
            intRow = intRow + 1
            intCol = 1
        Else
            intCol = intCol + 1
        End If
        intDay = intDay + 1
    Wend

    '各カレンダーのタイトルを出力します。
    objWs.Range("A1").Value = intYear & "年" & intMonth & "月のカレンダー"
    objWs.Range("A1").Font.Bold = True
    
    'オブジェクトを開放します。
    Set objWs = Nothing
End Sub

VBAを設定する

VBAを設定していきましょう。

年を指定します。サンプルは2023年なので2023を指定しています。

intYear = 2023

作りたい月の範囲を指定します。

For intMonth = 1 To 12

例えば4月から6月まで作りたい場合は以下のようにします。

For intMonth = 3 To 6

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

2023年の1年分のカレンダーが一瞬で作成されましたね!

VBAの説明

VBAについて説明をします。

ワークシートを追加します。

Set objWs = Worksheets.Add

ワークシートの名前を年月に変更します。

objWs.Name = intYear & "年" & intMonth & "月"

月間カレンダー作成プロシージャを呼び出します。

Call 月間カレンダーを作成(objWs, intMonth, intYear)

ここから月間カレンダーを作成するプロシージャの内容となります。引数を受け取り各変数に代入します。

月間カレンダーを作成(objWs As Worksheet, intMonth As Integer, intYear As Integer)

カレンダーの項目に入れる値を指定します。

objWs.Cells(3, 1).Value = "日"~objWs.Cells(3, 7).Value = "土"

カレンダー表のスタイルを指定します。

'日曜日のテーマカラーを指定します。
intSunThemeColor = 6
'平日のテーマカラーを指定します。
intHeiThemeColor = 5
'土曜日のテーマカラーを指定します。
intSatThemeColor = 10

月あたりの日数分処理を繰り返します。

While intDay <= numDays

土曜日の位置の場合、一行下にずれます。それ以外は横に日付を入れていきます。

各カレンダーのタイトルを出力します。

objWs.Range("A1").Value = intYear & "年" & intMonth & "月のカレンダー"、objWs.Range("A1").Font.Bold = True

オブジェクトを開放します。

Set objWs = Nothing

Excel VBAで2023年の年間カレンダー書式変更した上で作成する方法

次はExcel VBAで2023年の年間カレンダー書式変更した上で作成する方法について説明をします。

VBAを設定する

使うコードは前回と同様です。書式設定部分の値のみ変更します。

日曜日と平日の色を変えてみます。

変更前

'日曜日のテーマカラーを指定します。
intSunThemeColor = 6
'平日のテーマカラーを指定します。
intHeiThemeColor = 5
'土曜日のテーマカラーを指定します。
intSatThemeColor = 10

変更後

'日曜日のテーマカラーを指定します。
intSunThemeColor = 12
'平日のテーマカラーを指定します。
intHeiThemeColor = 7
'土曜日のテーマカラーを指定します。
intSatThemeColor = 10

VBAを実行する

前回作成したシートを削除した上、VBAを実行します。

はい!指定した書式に変更されましたね!

書式設定の説明

書式設定の内容について説明します。

Excelでは使用するテーマの色をXlThemeColorを使い指定することができます。

設定できる値は以下の通りです。

名前 説明
xlThemeColorAccent1 5 Accent1
xlThemeColorAccent2 6 Accent2
xlThemeColorAccent3 7 Accent3
xlThemeColorAccent4 8 Accent4
xlThemeColorAccent5 9 Accent5
xlThemeColorAccent6 10 Accent6
xlThemeColorDark1 1 Dark1
xlThemeColorDark2 3 Dark2
xlThemeColorFollowedHyperlink 12 表示済みのハイパーリンク
xlThemeColorHyperlink 11 ハイパーリンク
xlThemeColorLight1 2 Light1
xlThemeColorLight2 4 Light2

参考:https://learn.microsoft.com/ja-jp/office/vba/api/excel.xlthemecolor

タカヒロ
タカヒロ
各色についてはカラーパレットの色を参考にしてください。

XlThemeColorの色見本

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・Excel VBAで2023年の年間カレンダーを一瞬で作成する方法
・Excel VBAで2023年の年間カレンダー書式変更した上で作成する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です