• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:該当の曜日に色を塗るマクロの作成方法)

該当の曜日に色を塗るマクロの作成方法

このQ&Aのポイント
  • マクロを使って、特定の曜日に色を塗るボタンを作成する方法を教えてください。
  • Excelで特定の曜日に色を塗るためのマクロを作成する方法を教えてください。
  • 曜日ごとに色を塗るボタンを作るためのExcelマクロの作成方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

何度もごめんなさい。 No.2で >コマンドボタンのバックカラーの色・・・・ と書きましたので、この際ですのでやり方だけ説明しておきます。 ↓の画像で「月曜日」と「火曜日」のコマンドボタンだけ配置しました。 水・木・・・と増えてもやり方は一緒です。 もし、ツールバーに「コントロールツールボックス」のツールバーが表示されていない場合は ツールバーの適当なところで右クリック → コントロールツールボックス を選択 (今後使用する予定がある場合は表示されたツールボックスをツールバーにドラッグすれば常にツールバーに表示されます) (1)ツールボックス内の「コマンドボタン」を選択 → Sheet上の配置したいところで適当にドラッグ (2)プロパティを選択 → ↓の画像ようにプロパティダイアログが出ますので オブジェクト名を仮に「月曜日」と入力 BackColorの下向き▼ → 「パレット」で好みの色を選択 これでコマンドボタンは画像のように表示されます。 (3)月曜日のコマンドボタン上でダブルクリック ↓のコードをコピー&ペースト Dim j As Long 'この行から Private Sub 月曜日_Click() Range(Cells(3, 1), Cells(4, 31)).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.Color = 月曜日.BackColor End If End If Next j End Sub 'この行まで これで「月曜日」のコマンドボタンは完成です。 同様に「火曜日」のコマンドボタンを配置 → プロパティで設定 → 「火曜日」のコマンドボタンをダブルクリック Private Sub 火曜日_Click() End Sub の2行が表示されますので、先ほどの「月曜日」のコードの必要部分のみをコピー&ペースト そして >Weekday(Cells(4, j)) = 2 の行の「2」を「3」に! >月曜日.BackColor を >火曜日.BackColor とすればいちいち色を設定しなくてもOKです。 (コード内の「月曜日」「火曜日」はプロパティで設定したオブジェクト名です。) これを必要な数の曜日分設定します。 最後に「デザインモード」になっているはずですので、ツールバーの三角定規や鉛筆のアイコンをクリックして デザインモードを解除します。 (設定し直したい場合は「デザインモード」をONにして行います) 以上、長々と失礼しました。m(_ _)m

babycomecome
質問者

お礼

本当に感動しました!!! こんなに丁寧に教えていただいたのは初めてです!!! デザインモード(画像のツールバー)のプロパティなんて意味がわからず、使ったことがなかったのに、今回でわかるようになりました! ベストアンサーだけでは足らないくらい、感謝しております。 ありがとうございました!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

続けてお邪魔します。 補足を読ませてもらって一安心です。 確かに前回のコードでは小の月で月末の空白セルが指定の曜日の場合は エラーになってしまいますね。 コードを↓に変更してみてください。 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

babycomecome
質問者

お礼

できました! 出だしの『Private Sub』の『Private』を入れるとなぜ失敗するのかはわかりませんが、抜けば完璧にできました!もうひとつの画像をつけてくださった回答のほうにベストアンサーを付けさせていただきます! ありがとうございました!!!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 質問内容からするとコマンドボタンを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

babycomecome
質問者

お礼

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 無知で申し訳ございませんが、 よろしくお願いいたします。

babycomecome
質問者

補足

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 --------------------------------------------------- お手数をかけますが、引き続きご指導をお願いいたします。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう