« 任意の年の祝日を取得する | トップページ | 月間カレンダー、祝日あり »

2010年3月23日 (火)

祝日を年間カレンダーに追加する

記事「任意の日付から任意の日付までを一列にセル に入れる 」の中の
DateWriterYプロシージャで作る年間カレンダーと、

記事「任意の年の祝日を取得する 」の中の
GetHollydaysプロシージャで取得する
祝日の情報を統合します。

手順は、
まず既存の2つのプロシージャを呼び出して
年間カレンダーと祝日の2つのシートを作成します。

この2つのシートの日付けが等しければ
祝日の名称を
年間カレンダーのシートにコピペします。

そして、その日付けのセルの塗りつぶしを
日曜と同じに色を設定します。

コードはこちら

祝日を年間カレンダーに追加するコード:

Sub macro100323a()
'2010年1列カレンダー
'祝日を追加

    Dim MyYear, EndRow1, EndRow2, FirstRow As Integer
    Dim SheetA, SheetB As Worksheet
    Dim i, j As Integer

    '既存プロシージャを呼び出し
    '年間カレンダー、祝日を取得
    MyYear = 2010
    Sheets.Add.Name = MyYear & "年カレンダー"
    Call DateWriterY(CStr(MyYear))
    Call GetHollydays(CStr(MyYear))
   
    'シートオブジェクトをセット
    Set SheetA = Sheets("祝日" & MyYear)
    Set SheetB = Sheets(MyYear & "年カレンダー")
   
    '各シートの最終行を代入
    EndRow1 = SheetA.Range("A1").End(xlDown).Row
    EndRow2 = SheetB.Range("A1").End(xlDown).Row
   
    '祝日を年間カレンダーに統合する
    FirstRow = 2
    For i = 3 To EndRow1
        For j = FirstRow To EndRow2
            If SheetA.Cells(i, 1) = SheetB.Cells(j, 1) Then
            'SheetAとSheetBの日付けが等しいなら
            '祝日名をコピペして、日付けを色付け
                SheetA.Cells(i, 2).Copy Destination:=SheetB.Cells(j, 2)
                SheetB.Cells(j, 1).Interior.ColorIndex = 38
                FirstRow = j + 1
                Exit For
            End If
        Next j
    Next i
            
End Sub

macro100323aを実行後のシートの一部
Vba20100323a

祝日も追加できたので
次は、ひと月を週ごとに区切った
よく見る月間カレンダーにしたいです。

|

« 任意の年の祝日を取得する | トップページ | 月間カレンダー、祝日あり »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 祝日を年間カレンダーに追加する:

« 任意の年の祝日を取得する | トップページ | 月間カレンダー、祝日あり »