« 任意の日付から任意の日付までを一列にセルに入れる | トップページ | 『Microsoft Excel 2000 Power Programming with VBA』 »

2010年3月19日 (金)

特定の曜日を判定してセルに色を付ける

記事「任意の日付から任意の日付までを一列にセル に入れる 」で、
日付を上から順に一列に入れました。

カレンダーやスケジュール帳など、
土曜日、日曜日は水色やピンクに色付けされています。
これをします。

曜日の判定にWeekday 関数を使います。
Weekday 関数は、日曜から順に1から7までの数字を返します。

日曜   1
月曜   2
火曜   3
水曜   4
木曜   5
金曜   6
土曜   7

使い方は、例えば

Weekday("2010/3/19")なら、金曜なので7を返します。

Weekday("2010/3/19") = 7

Weekday 関数は既定では、日曜から始まりますが
任意の曜日を最初にすることもできます。
詳細は、VBAヘルプにあります。

下のコードでは、範囲を指定して
その範囲の土日を判定して色付けます。

コードはこちら

土曜日曜のセルを色付けするコード:

Sub macro100319a()
'WeekendColor使用例
'括弧内、Rangeで範囲を指定する
    Call WeekendColor(Range("A2:A32"))
End Sub

Sub WeekendColor(MyRange As Range)
'土日に色づけ
    Dim obj As Object

    For Each obj In MyRange
        If Weekday(obj.Value) = 7 Then
        '土曜
            obj.Interior.ColorIndex = 37
        ElseIf Weekday(obj.Value) = 1 Then
        '日曜
            obj.Interior.ColorIndex = 38
        End If
    Next obj
End Sub

macro100319aを実行後のシートの一部
Vba20100319a

WeekendColorプロシージャはRange型で範囲を指定するので
一列だけではなく複数行でも大丈夫です。
Vba20100319b

これは、後々の為です。

記事「任意の日付から任意の日付までを一列にセル に入れる 」の中の
コード「DateWriter」を改造して
日付出力と同時に
土日の色付けもしてしまいます。

改造といっても
「WeekendColor」を呼び出すだけです。

DateWriterの中の変数SPANを使って
土日を判定して色を付ける範囲を指定します。

コードはこちら

土曜日曜を色付けする改造版DateWriter:

Sub DateWriter(DAY1 As Date, DAY2 As Date)
'任意の日付から任意の日付までを一列にセルに入れる
'土曜日曜を色付けする改造版DateWriter

    Cells(1, 1) = "日付"
    Dim i, SPAN As Integer
   
    SPAN = DAY2 - DAY1 + 1 '日数
    Debug.Print SPAN
    For i = 0 To SPAN - 1
        Cells(i + 2, 1) = DAY1 + i
    Next i
   
    'ここにWeekendColorを追加
    Call WeekendColor(Range("A2:A" & SPAN - 1))
   
    '表示形式を指定する
    Columns(1).NumberFormat = "m月d日(aaa)"

End Sub

カレンダー道は、まだまだ続く。

|

« 任意の日付から任意の日付までを一列にセルに入れる | トップページ | 『Microsoft Excel 2000 Power Programming with VBA』 »

コメント

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

トラックバック


この記事へのトラックバック一覧です: 特定の曜日を判定してセルに色を付ける:

« 任意の日付から任意の日付までを一列にセルに入れる | トップページ | 『Microsoft Excel 2000 Power Programming with VBA』 »