- ベストアンサー
セルの塗りつぶしマクロを作ったのですが・・
初めて投稿します。どうぞよろしくお願いします。 エクセルの条件付き書式では4通りにしか設定できないため、マクロ初心者ではありますが、こちらでの回答を参考に作ってみました。 0~0.999 薄ピンク 1~1.999 ピンク 2~2.999 赤 3~3.999 オレンジ ↓ ↓ 25~25.999 濃い紫 と26パターンに自動的に塗りつぶすマクロを作りました。 ところが空白のセルも0~0.999で指定している薄ピンクに塗りつぶされてしまいます。 何分初心者なもので、どこを修正したら良いのかわかりません。 どなたかアドバイス頂けると助かります。 よろしくお願いします。 Sub color0_25() Dim Target As Range For Each Target In Range("A1:Z1000") Select Case Target.Value Case Is < 0 Target.Interior.ColorIndex = 0 Case Is < 1 Target.Interior.ColorIndex = 38 Case Is < 2 Target.Interior.ColorIndex = 7 Case Is < 3 Target.Interior.ColorIndex = 22 Case Is < 4 Target.Interior.ColorIndex = 3 Case Is < 5 Target.Interior.ColorIndex = 46 Case Is < 6 Target.Interior.ColorIndex = 45 Case Is < 7 Target.Interior.ColorIndex = 44 Case Is < 8 Target.Interior.ColorIndex = 6 Case Is < 9 Target.Interior.ColorIndex = 36 Case Is < 10 Target.Interior.ColorIndex = 35 Case Is < 11 Target.Interior.ColorIndex = 4 Case Is < 12 Target.Interior.ColorIndex = 50 Case Is < 13 Target.Interior.ColorIndex = 14 Case Is < 14 Target.Interior.ColorIndex = 34 Case Is < 15 Target.Interior.ColorIndex = 37 Case Is < 16 Target.Interior.ColorIndex = 33 Case Is < 17 Target.Interior.ColorIndex = 28 Case Is < 18 Target.Interior.ColorIndex = 41 Case Is < 19 Target.Interior.ColorIndex = 5 Case Is < 20 Target.Interior.ColorIndex = 11 Case Is < 21 Target.Interior.ColorIndex = 55 Case Is < 22 Target.Interior.ColorIndex = 17 Case Is < 23 Target.Interior.ColorIndex = 39 Case Is < 24 Target.Interior.ColorIndex = 54 Case Is < 25 Target.Interior.ColorIndex = 13 Case Is < 26 Target.Interior.ColorIndex = 21 End Select Next End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは Case Is < 0 を Case Is <= 0 としてみては? 0を入れたときは塗りつぶしができませんが・・・ または Case Is = "" Target.Interior.ColorIndex = 0 を最初に付け加えるとか・・・
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
Case Is = "" '→ 追加 Target.Interior.ColorIndex = 0 '→ 追加 Case Is < 0 Target.Interior.ColorIndex = 0 ではダメですか?
補足
回答ありがとうございます! 希望通りの塗りつぶしができました!! どうもありがとうございます。 これで作業がとっても楽になります。 本当にありがとうございました。
- FEX2053
- ベストアンサー率37% (7991/21372)
select caseに入る前に if Target.Value="" then で、一番後ろまで ジャンプさせてしまえばいいかと。
補足
さっそくの回答ありがとうございます! こんなに早くお返事がきて嬉しいです。 Dim Target As Range For Each Target In Range("A1:Z1000") If Target.Value = "" Then Select Case Target.Value と入力するということですよね? コンパイルエラーが出てしまって 「Next に対応する For がありません」と。 End Select End if Next End Sub としてみたら、動きますがさっきと変わりませんでした・・。 何を追加したらよいのでしょうか? 度々すみませんが、よかったらご回答ください。
補足
回答ありがとうございます! 0の時も塗りつぶしにならなければいけないので Case Is = "" Target.Interior.ColorIndex = 0 を試してみました。 思い通りの塗りつぶしになりました!! ""は、エクセルの時はよく使うのに、マクロだと意気込むと思い浮かびませんでした(汗) これからも参考にさせていただきます。 ありがとうございました!