VBA初心者の私としてはこんなものかな・・・
では、説明しますね。
初めは、祝日・日曜日の赤色の箇所を休日金額にしたかったんです・・・が、
実は土・日曜日を条件付き書式設定で文字色を変えてるので無理やったんです・・・
- 条件付き書式設定で色を付けていると色番号を認識させることが無理なんですよね
- そこで、日曜日だけでも入力させようと

条件付書式設定で指定していた数式WEEKDAY関数を使い
先ず数字を引っ張り出したんです。
この時、一週間を日曜日から始まる1に設定したんですね
だから、日曜日の箇所は1と表示されるわけなんです。
これを踏まえて、下の図のL列に応用したんです。 - 後はVBAを使用して
- まず、K列の前のデータを消去
Range("K2:K32").Select
Selection.ClearContents
Range("K2").Select - 次に、1の日曜日に980、その他の曜日に880を入力
Dim セル範囲 As Range
For Each セル範囲 In Range("L2:L32")
If セル範囲.Value = "1" Then
セル範囲.Offset(0, -1) = "980"
Else
セル範囲.Offset(0, -1) = "880"
End If
Next セル範囲 - ここで問題が起きました・・・
選択範囲をL2:L32としているため、
L30,L31,L32のそれぞれのセルが数式のエラー値である#VALUE!と表示され
結果、マクロ自体が2月はエラーになってしまうんです。 - そこでL列の30、31、32(要するに、29日、30日31日にあたるセル)に関数
=If(J30="","",WEEKDAY(J30))
=IF(J31="","",WEEKDAY(J31))
=IF(J32="","",WEEKDAY(J32))
J30が空白ならばL30も空白、
J31が空白ならばL31も空白、
J32が空白ならばL32も空白という指図に関数変更 - 結局、このVBAで動作するようになりました。
Sub 時給クリア()
'
' 時給クリア Macro
' マクロ記録日 : 2007/2/6 ユーザー名 :
'
'
Dim セル範囲 As Range
Range("K2:K32").Select
Selection.ClearContents
Range("K2").Select
For Each セル範囲 In Range("L2:L32")
If セル範囲.Value = "1" Then
セル範囲.Offset(0, -1) = "980"
Else
セル範囲.Offset(0, -1) = "880"
End If
Next セル範囲
End Sub
- まず、K列の前のデータを消去
※ただ、色指定で入力できたら、祭日も可能やったんですが・・・
日曜日だけの変更で、祝日に関しては今まで通り手で直さなければなりません・・・*1

*1:+_+