続けてお邪魔します。
補足を読ませてもらって一安心です。
確かに前回のコードでは小の月で月末の空白セルが指定の曜日の場合は
エラーになってしまいますね。
コードを↓に変更してみてください。
Private Sub CommandButton1_Click()
Dim j As Long
Rows(3 & ":" & 4).Interior.ColorIndex = xlNone
For j = 1 To 31
If Cells(4, j) <> "" Then
If WorksheetFunction.Weekday(Cells(4, j)) = 2 Then
Range(Cells(3, j), Cells(4, j)).Interior.ColorIndex = 6
End If
End If
Next j
End Sub
こんなんではどうでしょうか?
※ 余談ですが、少し慣れてくると各曜日ごとにコマンドボタンの「バックカラー」を変えて
その色に塗りつぶすことも可能になります。
そうすれば同じコードを各コマンドボタンにコピー&ペーストし
>Weekday(Cells(4, j)) = 2
の「2」の部分を変更するだけで各曜日の色を変えることが出来ます。m(_ _)m
こんばんは!
質問内容からするとコマンドボタンを7個作る!というコトですかね?
一応そういうコトだとして・・・
とりあえず「月曜日」のコマンドボタンのコードの一例です。
4行目がシリアル値のようですので、それを利用する方法です。
Private Sub CommandButton1_Click()
Dim j As Long
Rows(3 & ":" & 4).Interior.ColorIndex = xlNone
For j = 1 To 31
If Cells(4, j) <> "" And WorksheetFunction.Weekday(Cells(4, j)) = 2 Then
Range(Cells(3, j), Cells(4, j)).Interior.ColorIndex = 6 '←黄色にしています。
End If
Next j
End Sub
※ コード内の
>Weekday(Cells(4, j)) = 2
の「2」を「3」に変更すれば「火曜日」のセルに色がつきます。
※ 一旦セルの「色はなし」にしていますので、もし色つきのセルはそのまま残したいのであれば
>Rows(3 & ":" & 4).Interior.ColorIndex = xlNone
の行を削除してください。
参考になりますかね?m(_ _)m
質問者
お礼
tom04さん
早々のご指導ありがとうございます。
お恥ずかしながら、マクロの登録やボタン作成等はできるものの、
VBAの概念といいますか、操作がわからず、
マクロを実行すると、
『コンパイルエラ:End Subが必要です』というものが出てしまいます。
今、見たらこんな感じです。
どこを触ったらよいでしょうか。
Sub test()
'
' test Macro
' マクロ記録日 : 2012/9/25 ユーザー名 : ●●●
'
'
Private Sub CommandButton1_Click()
Dim j As Long
Rows(3 & ":" & 4).Interior.ColorIndex = xlNone
For j = 1 To 31
If Cells(4, j) <> "" And WorksheetFunction.Weekday(Cells(4, j)) = 2 Then
Range(Cells(3, j), Cells(4, j)).Interior.ColorIndex = 6 '←黄色にしています。
End If
Next j
End Sub
無知で申し訳ございませんが、
よろしくお願いいたします。
質問者
補足
Private Subの『Private』を抜いたら
マクロを実行することができ、色も塗れました!
ありがとうございます!!!
しかし、エラーが出てしまいます。
---------------------------------------------------
実行時エラー'1004':
WorksheetFunction クラスの Weekday プロパティを取得できません。
---------------------------------------------------
入力したマクロは下記のとおりです。
---------------------------------------------------
Sub CommandButton1_Click()
Dim j As Long
Rows(3 & ":" & 4).Interior.ColorIndex = xlNone
For j = 1 To 31
If Cells(4, j) <> "" And WorksheetFunction.Weekday(Cells(4, j)) = 2 Then
Range(Cells(3, j), Cells(4, j)).Interior.ColorIndex = 6 '←黄色にしています。
End If
Next j
End Sub
---------------------------------------------------
お手数をかけますが、引き続きご指導をお願いいたします。
よろしくお願いいたします。
お礼
本当に感動しました!!! こんなに丁寧に教えていただいたのは初めてです!!! デザインモード(画像のツールバー)のプロパティなんて意味がわからず、使ったことがなかったのに、今回でわかるようになりました! ベストアンサーだけでは足らないくらい、感謝しております。 ありがとうございました!