• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:全体を表示 マクロ 色が思うように、表示できない)

マクロ 色が思うように、表示できない

このQ&Aのポイント
  • マクロを使用して色の表示が思うようにできない場合の質問です。
  • 質問者が指摘された問題に対して解決策を探しており、他のユーザーからの回答も参考にしています。
  • 質問者のコードを示し、それぞれの条件に応じてセルに色を付ける方法について説明されています。

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

  • ベストアンサー
回答No.3

【補足】目で見たら判る書き方を!   Dim I AS Integer   Dim isGokaku As Boolean   Dim isKeppin As Boolean   Dim intIE As Integer   Dim intIF As Integer   Dim intIG As Integer   Dim intIH As Integer   Dim intColor As Integer   Dim strFlag As String   ' ***********   ' 判定準備   ' ***********   intIE = Cells(I, "E")   intIF = Cells(I, "F")   intIG = Cells(I, "G")   intIH = Cells(I, "H")   ' *******************   ' 倫理式による判定   ' *******************   isKeppinn = intIH >= 1 And intIH <= 49   isGoukaku = intIE >= 20 And intIF >= 6) * intIG >= 10 _         + intIE= 0 + intIF= 0 + intIG = 0 _         ‥‥   ‥‥   ' ***************   ' 合欠不の表示   ' ***************   Cells(I,J) = Mid("合欠不", Abs(-1 + isKeppin * 1 + isGoukoaku * 2), 1)   ' ************************   ' ColorIndex の更新 E-H   '   ' 06:黄色   ‥‥   ‥‥   '   ' ************************   Cells(i, "E").Interior.ColorIndex = _           ((intIE >= 1 * intIE < 20)) * 6   ‥‥   ' ************************   ' ColorIndex の更新 J   '   ' 38:ローズ   ' 38:白   ' 45:薄いオレンジ   '   ' ************************   Cells(i, "J").Interior.ColorIndex = _          Abs(isKeppin * 38 + isGoukoaku * 2 + Not isGoukaku * 45)  これだと、プログラムコードを上から目で追うだけでチェックできます。

rr5se
質問者

お礼

有難うございます。こんな判定のことまで考えたことがありませんでした。腰を落ち着けて、しっかり考え直さないとできない気がしています。初心者であればあるほど、整理するべきなことが多くあると反省しています。

その他の回答 (2)

回答No.2

【補足】論理式もあり  正しいかどうかは置いといて、次のように論理式で書いたが良いのでは・・・   Dim isGokaku As Boolean   Dim isKeppin As Boolean   isKeppinn = Cells(i, "H") >= 1 And Cells(i, "H") <= 49    isGoukaku = (Cells(i, "E") >= 20 And Cells(i, "F") >= 6) _         * Cells(i, "G") >= 10 _         + Cells(i, "E") = 0 _         + Cells(i, "F") = 0) _         + Cells(i, "G") = 0  これだと、論理式の順序次第では正誤チェックもたやすいと思う。

rr5se
質問者

お礼

有難うございます、少し勉強させて下さい。時間をかけてやってみます。

回答No.1

 一度《Cells(i, "F") <= 10》の条件に合致しなのを除外しておいて《Cells(i, "G")》の値で再判定することは不能。また、 (Cells(i, "E") >= 20 の条件を書く必要はない。それに、《(Cells(i, "E") <= 19》という条件判定は既出、よって、最後の二つのIf 判定も成立しない。ともかく、If Then 文という手法を中止すべきと思う。

rr5se
質問者

お礼

ありがとうございます。もう少し、整理してみます。