Excelでカレンダーを作ってみよう

Step 7 日付をセット

Step3で作成した、祝日取得・セル位置計算・月の末日取得のプロシージャを使用し、カレンダーに1日からその月の末日までの日付をセットしていきます。

日曜と土曜のフォント色は前回設定済みなので、祭日のみチェックし祭日なら赤色で設定します。




Homeに戻る > Excelでアプリケーションソフト > カレンダーソフト

シートのVBAコード

下記のコードを変更してください

・その月の1日の曜日から、セル位置計算プロシージャで開始セルを取得します。
・Forループで、1からその月の末日までループし日付をセットしていきます。
・祭日かどうかチェックし、祭日の場合Font.Color=vbRedで赤色で表示します。
・列が7列目(土曜日)の場合、先頭列(日曜日)に戻しています。

'カレンダーを作成
Private Sub ExCalenSetSub(mm As Integer)
    Dim i As Integer
    Dim nlast As Integer
    Dim nc As Long
    Dim scell As String
    Dim startcell As String
    Dim s As String
    Dim tdate As Date
    
    startcell = Range("C5")
    scell = startcell
    tdate = Format(Range("C6") & "/" & mm & "/1", "yyyy/mm/dd")
    nlast = MonthLastDay(Range("C6"), mm)
    
    Sheets(mm & "月").Select
    Sheets(mm & "月").Activate
    
    '月のセット
    ActiveSheet.Range(scell).Offset(0, 3) = mm & "月"
    '中央に表示
    ActiveSheet.Range(scell).Offset(0, 3).HorizontalAlignment = xlHAlignCenter

    scell = Range("C5")
    
    Sheets(mm & "月").Select
    Sheets(mm & "月").Activate
    
    For i = 1 To 7
        Select Case i
            Case 1: s = "日"
            Case 2: s = "月"
            Case 3: s = "火"
            Case 4: s = "水"
            Case 5: s = "木"
            Case 6: s = "金"
            Case 7: s = "土"
        End Select
        '曜日をセット
        ActiveSheet.Range(scell).Offset(1, i - 1) = s
        '中央に表示
        ActiveSheet.Range(scell).Offset(1, i - 1).HorizontalAlignment = xlHAlignCenter
    Next
    '日曜日の色
    ActiveSheet.Range(ActiveSheet.Range(scell), _
        ActiveSheet.Range(scell).Offset(7, 0)).Font.Color = vbRed
    
    '土曜日の色
    ActiveSheet.Range(ActiveSheet.Range(scell).Offset(0, 6), _
        ActiveSheet.Range(scell).Offset(7, 6)).Font.Color = vbBlue
    
    '開始の曜日
    nc = Weekday(tdate) - 1
    '開始のセル位置
    scell = A1Add(scell, 2, nc)
    
    For i = 1 To nlast
        '祭日のチェック
        If GetSaijituName(tdate) <> "" Then
            ActiveSheet.Range(scell).Font.Color = vbRed
        End If
        tdate = tdate + 1
        
        '日付のセット
        ActiveSheet.Range(scell) = i
        nc = nc + 1
        If nc = 7 Then
            nc = 0
            scell = A1Add(scell, 1, -6)
        Else
            scell = A1Add(scell, 0, 1)
        End If
    Next
End Sub


実行結果

12月1日が土曜から開始し、24が祭日の為赤色表示になっています。

カレンダーの日付がセットされました

Homeに戻る > Excelでアプリケーションソフト > カレンダーソフト

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved