- ベストアンサー
エクセルVBAについて
最近、いろいろな質問をしています。今度はエクセルVBA(Excel2003)に関する質問です。 最近、在庫管理を任せられるようになり在庫管理表をエクセルで作成しています。わが社に何日に荷物が入荷し、何日に取引先に納入した、などの表です。その中で、すでに条件付書式が3つ作成済みなのですが、新たに1つ追加する必要が出てきました。 J:弊社納期予定日 K:客先納入日 L:客先納品・・・Kに日付が入ると、「済み」と表示される M:弊社コメント用 O:弊社入庫数 P:弊社納入日 Q:弊社独自の設定 R:弊社独自の設定 S:Jの日付より遅れた場合、「遅延」と表示 条件付書式は、 条件1=AND((TODAY()+3)>$K***,ISBLANK($P***)) →Kが客先納入日で、Pが弊社納品日、遅れたらセルの色を黄にしてフォントを赤にする設定 条件2=AND(MOD(ROW(),2)=0,NOT(AND((TODAY()-5)>$K***,ISBLANK($P***)))) →1行おきにセルの色を緑にする、もしくはPの弊社納入日が遅れていない場合。フォントはデフォルトの黒 条件3=AND(MOD(ROW(),2)=0,NOT(ISBLANK($P***))) →1行おきにセルの色を白にする、もしくはPの弊社納入日が遅れていない場合。フォントは茶。 これに、今回追記事項として、 T列に、弊社からの請求書が「未発行」となった場合、セルの色がライトブルー、フォントが青になるよう設定します。 自分なりに、マクロを組んで、 Private Sub Worksheet_Change(ByVal ActiveCells As Excel.Range) Select Case ActiveCells '内容を比較 Case "未発行" r = ActiveCells.Row Rows(r).Interior.ColorIndex = 20 '塗りつぶしをライトブルー ActiveCells.Font.ColorIndex = 5 '文字色を青 Case "発行済み" r = ActiveCells.Row Rows(r).Interior.ColorIndex = xlNone ActiveCells.Font.ColorIndex = 1 Case "未請求" r = ActiveCells.Row Rows(r).Interior.ColorIndex = xlNone ActiveCells.Font.ColorIndex = 1 Case "" r = ActiveCells.Row Rows(r).Interior.ColorIndex = xlNone Case Else End Select End Sub としました。 そうすると、条件3に合致する行は、上記のマクロが実行されるのですが、条件1,2のときは、上記マクロが実行されません。 条件付き書式とマクロの併用は不可能でしょうか? それとも条件が4つ以上ある場合は、マクロで組むべきなのでしょうか? 希望としては、条件付書式を活かしつつ、マクロも実行させたい。 無理であれば、全部マクロで組みなおしたい。 もし、何か良い方法をご存知の方がいらっしゃいましたら、是非ご教授の程宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >条件2=AND(MOD(ROW(),2)=0,NOT(AND((TODAY()-5)>$K***,ISBLANK($P***)))) >→1行おきにセルの色を緑にする、もしくはPの弊社納入日が遅れていない場合。フォントはデフォルトの黒 この条件を少し整理すると、 AND(TRUE,NOT(FALSE))が 真 です。 NOT(FALSE)の中味は、(AND(TRUE,TRUE))以外はFALSE、 つまり、ISBLANK($P***)がFALSE(P列がブランクでない)の時は NOT(FALSE) を満たします。 なので、偶数行かつP列がブランクでない場合は 真 です。 ...という事は >条件3=AND(MOD(ROW(),2)=0,NOT(ISBLANK($P***))) この条件3は条件2に内包されています。 上の方の条件が優先されるので、条件3の書式は設定されません。 書込み例はあくまで例示であり、実際の条件は違うという事であればハズしてますが 条件を整理する事で、条件付き書式の3条件内で設定できるのであれば、 それにこした事はないと思います。 条件が4つ以上の場合、例えば設定するセル範囲を行全体ではなく、特定の列だけ変更するなど、 範囲ごとに条件を設定して妥協する事も考えられます。 >希望としては、条件付書式を活かしつつ、マクロも実行させたい。 という事に対しては、nda23 さんが既に書いてらっしゃいますが、 通常の[セルの書式設定]より[条件付き書式]が優先されますので、 設定したい条件が4つある場合は、条件の優先順位1~3を[条件付き書式]で設定し、 優先順位4番目をマクロで設定すると可能だと思います。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
マクロは実行されているのではありませんか? T列を変更し、それが"未発行"の場合だけ、目立った変化になりますが、それ以外の場合、見た目の変化はほとんど無いと思われます。 尚、実験してみましたが、マクロで色を変えても、条件付書式の方が有効になるようです。
お礼
end-uさん こんにちわ。詳細なご回答、ありがとうございます。この回答を参考にし、条件3を削除してマクロも消して、条件付き書式に追加した結果、自分の思うとおりの結果となり、大成功でした!!! end-uさんの詳細なご回答が無ければ、1ヶ月は悩んでいたと思います・・・。 本当にありがとうございました!!!