さあ、今日は、エクセルでカレンダーを作ってみましょう。
折角ですから、好きな日付を指定すると、その月のカレンダーを自動で作成するようにします。
関数を駆使しても出来ると思いますが、今回は、VBAを使用してみます。
そんなに長いコードではありませんから、ご心配なく。
これが、完成画面です。

J列1行目に 任意の日付を入力します。
そして、マクロを実行すると、カレンダーが作成されます。
なお、1行目の曜日は、最初に入力しておいてください。
罫線も、お好みで設定してください。
それでは、ALT + F11 で、Visual Basic Editorを起動します。
「挿入」メニューの「標準モジュール」をクリックします。
以下のように、コードを記述してください。
こんな感じですね。

MakeCalendar が、サブルーチンで、実際の処理部分です。
指定された日付の月の1日が、何曜日かを調べて、
その曜日から順に、1から始まる連番を入力するという仕組みです。
月末が何日かも、きちんと設定されます。
マクロで実行するのは、 test ですよ。
日付のセル範囲をクリアしてから、サブルーチンを実行しています。
それでは、実行してみましょう。
エクセルに切り替えてください。
J列1行目に 任意の日付を入力してください。
ちなみに、今回は、7/4と入力してみました。
「ツール」→「マクロ」→「マクロ」とクリックします。
ダイアログボックスが表示されたら、「実行」ボタンをクリックします。

すると、7月のカレンダーが作成されました。

日付を変えて、何度でも、作成してください。
ボタンにマクロを登録しておけば、もっと便利になりますよ。(^^)
だい
折角ですから、好きな日付を指定すると、その月のカレンダーを自動で作成するようにします。
関数を駆使しても出来ると思いますが、今回は、VBAを使用してみます。
そんなに長いコードではありませんから、ご心配なく。
これが、完成画面です。

J列1行目に 任意の日付を入力します。
そして、マクロを実行すると、カレンダーが作成されます。
なお、1行目の曜日は、最初に入力しておいてください。
罫線も、お好みで設定してください。
それでは、ALT + F11 で、Visual Basic Editorを起動します。
「挿入」メニューの「標準モジュール」をクリックします。
以下のように、コードを記述してください。
Sub MakeCalendar(hi As Date) Dim i As Integer Dim g As Integer Dim r As Integer Dim lastDay As Integer g = 2 r = Weekday(DateSerial(Year(hi), Month(hi), 1), vbSunday) lastDay = Day(DateSerial(Year(hi), Month(hi) + 1, 1) - 1) For i = 1 To lastDay Cells(g, r).Value = i If r = 7 Then r = 1 g = g + 1 Else r = r + 1 End If Next End Sub Sub test() Range("A2:G7").Value = "" MakeCalendar Range("J1").Value End Sub
こんな感じですね。

MakeCalendar が、サブルーチンで、実際の処理部分です。
指定された日付の月の1日が、何曜日かを調べて、
その曜日から順に、1から始まる連番を入力するという仕組みです。
月末が何日かも、きちんと設定されます。
マクロで実行するのは、 test ですよ。
日付のセル範囲をクリアしてから、サブルーチンを実行しています。
それでは、実行してみましょう。
エクセルに切り替えてください。
J列1行目に 任意の日付を入力してください。
ちなみに、今回は、7/4と入力してみました。
「ツール」→「マクロ」→「マクロ」とクリックします。
ダイアログボックスが表示されたら、「実行」ボタンをクリックします。

すると、7月のカレンダーが作成されました。

日付を変えて、何度でも、作成してください。
ボタンにマクロを登録しておけば、もっと便利になりますよ。(^^)
だい
