- ベストアンサー
excel マクロのセルの塗りつぶしについて
曜日によって特定のセルを自動で塗りつぶしたいのですが マクロでの方法を教えてください。 例として、 G3からAL3までひと月の曜日のデータがあるのですが、 土=水色 日=赤色 祝=黄色 (これ以外は、塗りつぶしなし) のように一致する縦列の2から51の背景塗りつぶしが自動で出来ないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私は、読み違えをしていましたね。 >2***年**月を入力するとG3:AL3に曜日(祝日も)が直接全角漢字で割振られます。 その行は、シリアル値の行が、G1 や G2 にあって、それを、「=TEXT(G1,"aaa")」 などとしてあるということですか? 例えば、 「= G1」 として、書式側で、「aaa」としてもよいのですが。私のマクロは、シリアル値に沿って、色を変更していきますから、祭日などは、コードを変えない限りはとても不可能ですね。 具体的に(式などやセルの番地)、その日付と曜日のデータの内容を教えてくださいませんか?
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
>マクロでの方法を教えてください。 ということですので、書いておきます。 何かの参考になれば、幸いです。 なお、数字の羅列は、休日データのシリアル値です。必ずしも正確ではありません。 Sub PatterColor() Dim Rng As Range Dim c As Range Dim Holidays As Variant Const Mizu As Integer = 8 '水色 Const Aka As Integer = 3 '赤 Const Ki As Integer = 6 '黄 '2005/1/2~2006/12/23 Holidays = Array(38353, 38362, 38394, 38432, 38471, 38475, _ 38476, 38477, 38551, 38614, 38618, 38635, _ 38659, 38679, 38709, 38719, 38726, 38759, _ 38797, 38836, 38840, 38841, 38842, 38915, _ 38978, 38983, 38999, 39024, 39044, 39074) '塗りつぶす範囲 Set Rng = Range("G3:AL3") Rng.Interior.ColorIndex = xlnon For Each c In Rng If IsDate(c) Then Select Case True Case 1 = Weekday(c) c.Interior.ColorIndex = Aka Case 7 = Weekday(c) c.Interior.ColorIndex = Mizu Case Not IsError(Application.Match(c.Value2, Holidays, 0)) c.Interior.ColorIndex = Ki End Select End If Next c End Sub
- hana-hana3
- ベストアンサー率31% (4940/15541)
条件付き書式ではいけないのですか? 塗りつぶしたい列を選択して、条件付き書式を設定します。 =G$3="土" あとは、書式のコピーで設定できます。 http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu5.htm#条件付き書式の実例・その2
お礼
あり難きご指導有難うございました。
- papayuka
- ベストアンサー率45% (1388/3066)
マクロに拘らなければ、条件付き書式で出来ます。 http://www.relief.jp/itnote/archives/000954.php http://www.relief.jp/itnote/archives/000971.php
お礼
あり難きご指導有難うございました。
お礼
あり難きご指導有難うございました。 すみません。うまくいかなかったので シリアル値で指定がまずいのでしょうか? 休日のデータが既に他のシートで作成してあり、 2***年**月を入力するとG3:AL3に曜日(祝日も)が直接全角漢字で割振られます。21日から、次月20日の曜日になります。 もし教えて頂けたら、参考にしたいのでよろしくお願い致します。
補足
やはりむりでしょうか?