• ベストアンサー

【Excelマクロ】指定した文字の行を色付け

以前、https://okwave.jp/qa/q10012573.html にてマクロで色付けする方法をご教示いただきました。 さらにE列に入力された指定の文字の行は違う色で色付けしたいのです。 (例) E列が”×”の行(A10~E10)をオレンジに色塗り 前回同様、条件付き書式は無しでお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

前回のコードを一部変更し追加しましたので以下で試してみてください。 ×の行の色が違う場合49407を、マクロの記録で実際に塗りたい色で色付けして番号を取得してください。 以下のどちらも基準日より前の日付で「×」でない場合は黄色で塗ります。 基準日より前の日付の条件は無関係で「×」だけで判断してオレンジに塗る場合 ↓ Sub Test() Dim i As Long Dim LastRow As Long LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range(Cells(5, "A"), Cells(LastRow, "E")).Interior.ColorIndex = xlNone For i = 5 To Cells(Rows.Count, "D").End(xlUp).Row If Cells(i, "D").Value <= Range("D2").Value And Cells(i, "E").Value <> "×" Then Range(Cells(i, "A"), Cells(i, "E")).Interior.Color = vbYellow ElseIf Cells(i, "E").Value = "×" Then Range(Cells(i, "A"), Cells(i, "E")).Interior.Color = 49407 End If Next End Sub 基準日より前の日付でありなおかつ「×」の場合にオレンジに塗る場合 ↓ Sub Test2() Dim i As Long Dim LastRow As Long LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range(Cells(5, "A"), Cells(LastRow, "E")).Interior.ColorIndex = xlNone For i = 5 To Cells(Rows.Count, "D").End(xlUp).Row If Cells(i, "D").Value <= Range("D2").Value Then If Cells(i, "E").Value <> "×" Then Range(Cells(i, "A"), Cells(i, "E")).Interior.Color = vbYellow ElseIf Cells(i, "E").Value = "×" Then Range(Cells(i, "A"), Cells(i, "E")).Interior.Color = 49407 End If End If Next End Sub

KO1014
質問者

お礼

ご回答ありがとうございました。 完璧です、素晴らしいの一言です。 毎回言葉足らずで申し訳ありません。 「基準日より前の日付の条件は無関係で「×」だけで判断してオレンジに塗る場合」が正しいです。 いつも当方のやりたいことを理解していただき、大変助かります。 今後とも、よろしくお願い致します。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

No.2で書き忘れてました。 もし、「×」が認識されていないようでしたら(オレンジにならない)、コード内の「×」はセルに記入している「×」をコピペしてください。

KO1014
質問者

お礼

補足ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

セルの塗りつぶしの色を指定するせる範囲が違うだけで 列を分けて、VBAコードを書けばよいのでは? (1)A-E列について    日付け条件を満たす    塗りつぶしの色ー黄色 (2)FーG列について    日付け条件満たす(1)と同じ条件    A-E列は黄色    かつG列が「X」ならF-G列はオレンジ色、それ以外なら、F-G列は黄色。 の処理を行えば済むことでは。 これは、エクセルの条件付き書式は使わない。 でも、処理後、データが変わった時は、自動で結果が反映されないよ。良いの? 何が聞きたいのか? ーー VBAでやるなら、条件1(日付)+条件2(F列が「X」かどうか)で、塗りつぶしの範囲を左右すれば済むことでしょう。 これは条件付き書式の考えが、Range(セル範囲)を主体に、塗つぶしの色1色を考える仕組みなのだからこうなる。 >条件付き書式は無しでお願いします こんなことを言うのは、初心者的な状態を丸出しするだけと思う。 セルの値等の条件を判別して、書式を変えるのが面倒だから、設けられた仕組と思うので、これを避けて、よいことも悪いこともない。条件付き書式は「数式で」利用のほかに沢山の選択肢があるのを、意識してますか?「数式が」を使わない方に、(設計者にとって)条件付き書式はエクセルの重点があるように思う。 ここの過去の質問などでは、ほとんど「数式が」で条件を表す、質問だが。

KO1014
質問者

お礼

ご回答ありがとうございました。 条件付き書式でしたら設定方法は分かりますので、わざわざ質問しません。 >データが変わった時は、自動で結果が反映されないよ。良いの? 日付は手入力では無く、決まった日付しか入力できないようマクロボタンで更新するように制限してあります。 そのマクロに色塗りマクロも設定してありますので、日付変更と同時に色塗りも更新されます。