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

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

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

お世話になります。 マクロの作成方法を教えてください。 ≪使用PC≫ windows XP Excel2003 ある『ボタン』を作成したいと思っております。 『月曜日』というボタンを押すと、日付と月曜日のセルに色を塗る。 『火曜日』というボタンを押すと、日付と火曜日のセルに色を塗る。 『水曜日』・・・・・ というボタンは作成可能でしょうか。 【例】 年は(セルA1) 月は(セルA2) 日は(セルA3~セルAE3) 曜日は(セルA4~セルAE4) 年と月と日は、べた打ちで数値を入力しています。 曜日は月と日から関数を入力し、自動で出ています。 IF(A$3="","",DATEVALUE($A$1&"/"&$A$2&"/"&A$3)) 条件付書式ではなく、ボタンを作りたいです。 他に記載の不備がありましたら、申し訳ございません。 よろしくお願いいたします。

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

  • ベストアンサー
  • 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

  • 該当の曜日に色を塗るマクロの作成方法2(VBA)

    いつも拝見させていただき、みなさまのご回答に感謝しています! 以前、質問をさせていただいたのですが、 VBA初心者の私では、やはり自分自身で応用ができず、 大分悩んだのですが解決できず、とても困っています。 前回ご回答してくださったtom04様、ありがとうございました。 『該当の曜日に色を塗るマクロ』を作成したいのですが、 当然ですが行や列を挿入すると「Weekdayプロパティを取得できません。」と エラーになってしまいます。 実際のセル番地を記載しますので、 ご回答をお願いいたします。 勉強不足で申し訳ございません。 【サンプルVBA】----------------------------- ≪使用PC≫ windows XP Excel2003 前回質問URL:http://okwave.jp/qa/q7714972.html ■曜日毎の『ボタン』を7つ作成する。 『月曜日』というボタンを押すと、日付と月曜日のセルに色を塗る。 『火曜日』というボタンを押すと、日付と火曜日のセルに色を塗る。 『水曜日』・・・・・ 【例】 年は(セルA1) 月は(セルA2) 日は(セルA3~セルAE3) 曜日は(セルA4~セルAE4) ※年と月と日は、べた打ちで数値を入力。 ※曜日は月と日から関数を入力し、自動で出ています。 IF(A$3="","",DATEVALUE($A$1&"/"&$A$2&"/"&A$3)) 【月曜日sample VBA】 Sub monday_sample() 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 【実用したいVBA】--------------------------- 年は(セルA3) 月は(セルA4) 日は(セルD6~セルAH6) 曜日は(セルD7~セルAH7) ※年と月と日は、べた打ちで数値を入力。 ※曜日は月と日から関数を入力し、自動で出ています。 例:セルD7→『IF(D$6="","",DATEVALUE($A$3&"/"&$A$4&"/"&D$6))』 -------------------------------------------- なにとぞよろしくお願いいたします。

  • EXCELマクロでの曜日の表示

    はじめまして。 EXCELマクロで曜日を表示させたいのですが、方法がわかりません。 A1セルに年、A2セルに月、A3~AE3に日付(1~31) が入力されている状態で、A4~AE4に曜日(日・月・・・土)を表示 させたいのですが、どのようにすればよいでしょうか? あまり文章を書くのが得意ではないので、わかりにくいかもしれませんが、宜しく御願いします

  • excel:曜日と日付に色を付ける

    excel2003を使い出勤表を作っているのですが、 日曜日の日付と曜日のFONTを赤にしたいのです。 ログを探してみましたが探し方がへたくそなのか、 見つかりませんので、新規で質問をさせていただきます。 条件付書式で曜日だけFONTの色を赤に変える事は出来たのですが、 これだと日付の色は変わりません。 ちなみに、日付のセル(A6)に当月を入力すると、 日付(Bセル)・曜日(Cセル)が自動的に変わるようにしてあります。 当月の日付を変えたら、日曜日のセルだけ自動的に、 日付・曜日を赤のFONTにすることは可能でしょうか? excelはまだまだ初心者な者で、どなたか教えていただけると助かります。 よろしくお願いします。

  • エクセルで日報を作成時に指定曜日のセルの色を変える

    エクセルで日報を作成しておりBに曜日を入力しております。 土曜日と日曜日だけセルの色を変更したいです。 条件書式で「土」と入力したら入力したセルの色を変更することは できたのですが列全体の色を変更したいです。 A列には日付でB列には曜日を入力した状態でA列からZ列まで指定した 色に変えるのにはどうすれば宜しいでしょうか? 曜日は短くして土曜日→土、日曜日→日と入力します。 エクセルは2010を使用しております。 以上、宜しくお願いします。

  • 曜日別にExcelシートにデーター入力

    A1セルに2014/3/18と入力した際、入力ボタンで図のようにA3~C12に2014/3/18は火曜日なのでデーターH3~J12を入力したいのですが。尚、A1の日付(曜日)を変更した際、入力ボタンを押すごとにA3~C12の値がその曜日ごとのデーターに変わるようにしたいのですが。VBAコードをお解りになる方よろしくお願いします。(因みに添付画面は月曜日から水曜日としてますが日曜日まで入力するつもりです)

  • 曜日が自動ではいる数式

    A2~AE31に1~31の数字(日付)が入力されています。A1のセルに「2005/04」と入力すると、数字の下の行にA3~AE31に曜日(例えばA3には2005年4月1日の『金』)が自動で入る数式をおしえてくださいませんでしょうか?急いでおります。助けてください。

  • エクセル 特定の単語が入力されたときにセルの色を変える

    エクセル 特定の単語が入力されたときにセルの色を変える A1に日付を入力すると、A2に自動的に曜日が入る数式を入れています。 カレンダーのように1ヶ月分がまとめて表示されているわけではなく、入力が必要な日だけ日付を入れるような表になるのですが、土曜や日曜の場合、曜日のセルの色を変える方法を教えていただけますでしょうか。 条件付書式でやってみたのですが、曜日のセルに数式を入れて自動的に表示させている場合、うまくできませんでした。(直接、土曜や日曜と入力するときちんと色が変わったのですが)

  • エクセルで日付・曜日の入った表の作成方法が知りたい

    エクセルで毎月の曜日と日付が入った表を作成したいです。 5月 1  火 2  (水) 3  (木) 4  (金)   5  (土) 6  (日)    ・    ・    ・ 31 木 エクセル初心者です。 ↑上記のように、毎月、日付と曜日が入った表を作成しています。 この表は、土日・祝は色を赤色にし、()をつけてわかりやすくしなければなりません。 毎回手書きで作成しているのですが、簡単に作成できる関数などはありませんか? たとえば、2012年5月などと入力したら自動的に日付と曜日が入り、土日祝は赤色で()がつくように したいんですが、難しいでしょうか? 回答よろしくお願いいたします。

  • Exel

    仮にB1を月曜日・B2を火曜日・・・と曜日を固定し、A3~A36に毎月日付けを入力する形態の月別表を作成しています。 このとき、日付入力のセルが空白ならばその行のセル(たとえばA3の日付入力セルだとすれば数式入力済みのC4~J4)も空白になるようにしたいのですが、どうすればいいのかわかりません。 わかりにくい質問かもしれませんが、ご助言いただけると大変助かります。

  • 【Excel】今日の「曜日」に色を付ける方法

    Excelで店舗の休日一覧を作っており、各店舗ごとに手作業で休日の曜日を入力しています。 ————————————— 店舗A|木        | ————————————— 店舗B|火(祝日→水)  | ————————————— 店舗C|月、水、年末年始 | ————————————— 現在このような感じで入力してありまして、ここに、今日の曜日の「文字列」が含まれているセルに(色をつける等の)強調を施す条件を設定したいと思っています。 しかし、今日の日付に色をつけることはできるのですが、曜日に色を付けることができず困っております。 条件の式などの設定方法が分かる方見えましたら、ぜひ教えていただけますでしょうか。 宜しくお願い致します。 ※今日の日付と曜日は関数で呼び出すことができています ※Excel2011を利用中ですが、Googleスプレッドシートでも同じ表を作りたいと考えているので、そちらでも使える方法がありましたら、一緒に教えていただけますでしょうか

専門家に質問してみよう