goo blog サービス終了のお知らせ 

パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

任意の日付から、カレンダーを自動作成する(Excel VBA)

2009-06-25 11:10:50 | ExcelVBA
さあ、今日は、エクセルでカレンダーを作ってみましょう。

折角ですから、好きな日付を指定すると、その月のカレンダーを自動で作成するようにします。

関数を駆使しても出来ると思いますが、今回は、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月のカレンダーが作成されました。




日付を変えて、何度でも、作成してください。


ボタンにマクロを登録しておけば、もっと便利になりますよ。(^^)



だい
コメント (5)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【おすすめ】

パソコン買ったらまず入れる10のアプリ