プロが教えるわが家の防犯対策術!

表があります。
EEEより下のデータで判定します
20の場合、20の必須項目にデータがなければ背景色を塗る。
50の場合、50の必須項目にデータがなければ背景色を塗る。

※表は動的です。固定ではないので下にも横にも数値が増えます。

というマクロを作成したいです。

「マクロについて教えてください、、」の質問画像

質問者からの補足コメント

  • 1.B3セルからお願いします

    2.FFFの右側にGGG、HHHなどが増えるという認識であっております。
    AAAの左側には増えないと理解して良いですか。←こちらも認識通りです、、

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/06 22:54
  • 【追記です】
    もし必須項目にデータがなかったらアラートも出したいです。。

      補足日時:2023/06/06 23:02
  • 分かりずらくすみません。
    メッセージボックスに警告を表示が希望です、

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/06/06 23:36
  • ありがとうございます。

    EEEのデータが20の場合、20の必須項目にデータがなければ背景色を塗る。
    EEEのデータが50の場合、50の必須項目にデータがなければ背景色を塗る。

    こちらの条件はコード上どこで設定されていますか、

    No.4の回答に寄せられた補足コメントです。 補足日時:2023/06/07 09:28

A 回答 (5件)

>EEEのデータが20の場合、20の必須項目にデータがなければ背景色を塗る。


>EEEのデータが50の場合、50の必須項目にデータがなければ背景色を塗る。
>こちらの条件はコード上どこで設定されていますか、

下記の「2.Dim flag() As Booleanの設定」がそれに該当するかと思います。


処理の概要を順に示します。
1.前処理
2行目の「○○の必須」とF列の○○が一致するセル位置を記憶する必要があります。
そのため、○○の必須から○○を取り出し、mvalに格納します。
mval(2)には50
mval(3)には20
mval(4)には50・・・が格納されます。
(31~34行の処理)

2.Dim flag() As Booleanの設定
flagが表示されているセルが必須項目か否かを示すフラグです。
添付図ではA1:G9の範囲を表しています。
このflagで1~3行目と6列(F列)は、本来使用しませんが、行番号と列番号で
このflagにアクセスするために、これらの行、列も含めています。
添付図でTRUEと表示されているセル位置にTRUEが設定されます。
例としては、C4がTUREにすべきなので、flag(4,3)=True  となるように設定をします。
上記を行うために、
①F列の4行から最終行まで、各セルの値(○○)を取り出す。(○○は20又は50)
②この○○がmval中の値に一致するかチェックする。
 一致するれば、その位置に該当するflagにTrueを設定する。
 (50行の flag(wrow, wcol) = True)
③この○○がmval中の値に1件も一致しないなら、エラーとし、終了する。
(①~③は37~61行)
「マクロについて教えてください、、」の回答画像5
    • good
    • 0
この回答へのお礼

ご丁寧に分かりやすい説明を有難うございます。
とても勉強になりました。

お礼日時:2023/06/07 10:32

追伸


No3で投稿したソースの
Const Basecol As Long = 6 'E列
ですが
Const Basecol As Long = 6 'F列
の誤りです。
コメント部の誤りなので、動作には影響しませんが、
念のため、訂正いたします。
この回答への補足あり
    • good
    • 0

下記にアップしました。


https://ideone.com/8Yh9CW

最終行は、F列を基準にして求めています。
    • good
    • 0

>アラートも出したいです


ビープ音をならすということですか?
それとも、メッセージボックスに警告を表示ということですか?
この回答への補足あり
    • good
    • 0

1.セルの正確なレイアウトが判りません。


AAAの文字があるセルは、何行、何列ですか。
(A3とかB4とかのような返信を期待しています)

2.「※表は動的です。固定ではないので下にも横にも数値が増えます。」
ということですが、FFFの右側にGGG、HHHなどが増えるということでしょうか。AAAの左側には増えないと理解して良いですか。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!