このページではエクセルVBAを使って、以下の画像のようにシート上にカレンダーを一発作成する方法をご紹介していきます。
基本的には、コード中で月の開始曜日、月の総日数を指定してあげるだけで簡単に作成できます。
資料作成の際にぜひご活用ください。
それではさっそくやっていきましょう。
※VBAを使ったことがない、という方は以下で始め方を解説していますので、まずはこちらからご覧ください。
エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説
カレンダー作成するサンプルVBAコード
それでは早速ですが、以下がカレンダー作成コードです。
Sub make_calendar()
Dim day_data As String, start_day As String
Dim day_number As Integer, i As Integer
'作成領域をクリアする
Range("A1:G7").ClearContents
'曜日データを構築(月からでもOK)
Week = "日,月,火,水,木,金,土"
'開始曜日を指定
start_day = "土"
'月の総日数を指定
day_number = 31
'カレンダー作成開始
For i = 0 To 6
Cells(1, i + 1) = Split(Week, ",")(i)
If Split(Week, ",")(i) = start_day Then
col = i + 1
End If
Next
ddd = 7 - col
rrr = 2
i = 1
Do Until i = day_number + 1
If i <= ddd + 1 Then
Cells(rrr, col) = i
i = i + 1
col = col + 1
Else
ddd = ddd + 7
col = 1
rrr = rrr + 1
End If
Loop
End Sub
※このマクロでは実行時にアクティブなシートのA1セルからG7セルに強制的に上書きするようになっています。
実行前は新しいシートを作成してから実行することをオススメします。
基本的には指定した情報をもとにゴリゴリfor文を回して作成しているだけですね。
(もうすこしうまく作れればいいのですが、いいアイデアが浮かびませんでした。)
カレンダー作成マクロの使い方
先ほどのマクロの使い方を解説しておきます。
まずは7行目にて、週の曜日を指定します。
今回は日曜日から始まるように書いていますが、ここは月曜日から始まるようにしても問題なく動作します。
次に9行目にて、作成したいカレンダーの初日の曜日を指定してあげます。
最後に11行目で月の総日数を指定してあげましょう。
ここまでできたら、開発タブ⇒マクロ⇒make_calenderを選択⇒実行で実行します。
これでマクロ実行時のアクティブセルのA1セルからG7セルにカレンダーが作成されているはずです。
サンプルコードの実行結果確認
以下の設定で、2022/4のカレンダーを作成してみました。
‘開始曜日を指定
start_day = “金”
‘月の総日数を指定
day_number = 30
問題なく作成できていますね。
ついでに2022/5のカレンダーも作成してみました。
‘開始曜日を指定
start_day = “日”
‘月の総日数を指定
day_number = 31
こちらも問題なく作成できていますね。
おわりに
というわけで今回は、エクセルVBAをつかって簡易的なカレンダーを作成する方法をご紹介しました。
ぜひ業務効率化にご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント