その質問が来ることは想定済みでした。
が、その上で一番わかりやすい方法で記述したつもりです。
ゼロベースでソースコードを書かせるのはこのサイトの規約に反しますので、発展的な考え方ができるように書いたつもりです。
私の第1投稿の赤字部分をよく観察してください。
今回の議題に対する変更箇所は唯一1行のみです。
元々セルA1(表記上は$A$1ですが)しか加算されない仕組みだったものに、A2・A3・A4が増えたらどうなるかという質問で改良した箇所を赤字で記載しています。
引用:
セルE7〜E45、I7〜I40、M6〜M41、Q6〜Q43に加算する指示を入力したいです。
最も簡単な書き方は第1投稿にて提示したように「If ■■■■■ Then」の■部分にその通りに記載する方法です。
ソースコードが非常に長くなりますが、最も単純な表記方法で再度設定を変更したい場合においてもメンテナンス性が高いです。
面倒だと思いますが、VBの基本構造を理解するためにも一度書いてみてください。
小学生の漢字ドリルと同じで何度も構文を書かないと感覚を掴むのは厳しいと思います。
多少の補足を下記に掲載します。よくお読みください。
「If ■■■■■ Then」の部分は「もし■■■■■が正しかったら」という疑問文になります。
■の部分には数学的な式で一致・不一致を判定できます。
式例:1=1:1は1か > 同じなのでTRUE判定(正しいという判定)
式例:1=2:1は2か > 違うのでFALSE判定(間違っているという判定)
また、今
回のIF文で使用しているのはイコールではなく、ノットイコール(不一致である)という意味の「<>」を使用して記述されています。
つまり先ほどの式例の答えが逆になります。
式例:1
<>1:1は1
じゃないか > 同じなので
FALSE判定
式例:1
<>2:1は2
じゃないか > 違うので
TRUE判定
また、If文には複数の条件式をまとめてぶっこむことができます。
条件式と条件式の間に「
And 」(前の条件式と後ろの条件式を両方とも満たす場合のみTRUEとなる)または「
Or 」(前の条件式と後ろの条件式いずれかが条件を満たしていればTRUEとなる)を含めることで連続で条件式を書けます。
本題に戻ります。
If Target.Address
<> "$A$1" Then Exit Sub
プログラムを和訳すると「ターゲットアドレスのセル座標はA1
じゃないか?」となります。
ここでいうターゲットアドレスとはセルの値を編集した箇所(最後に入力された箇所)がセルA1ではない番地か、という意味です。
元のソースコードではターゲットアドレスかどうかとしてA1以外のセルには加算する処理を行わないとしています。
それをA2・A3・A4のセルもターゲットアドレスとして含める変更をしています。
▼A1だけのとき
If Target.Address <> "$A$1" Then Exit Sub
▼A1・A2・A3・A4は加算するとき
If Target.Address <> "$A$1"
And Target.Address <> "$A$2" And Target.Address <> "$A$3" And Target.Address <> "$A$4" Then Exit Sub
つまり「And」で条件式を追加するだけです。
例えどれだけ長大な1行式を書くことになろうとも、そもそもの意味が理解できていなければメンテナンスできないので、あえてこの通り説明させていただきます。
今後VBの開発をされるならエチケットとして参考書を手元に置くようにして下さい。
高度な疑問以外受け付けないわけではないのですが(私も初歩的なミスをやりますし)、完全に知識がない状態の人に説明するための労力を常時割けるかどうかはここの常連さん方の気分次第です。
ただし、今回の質問の仕方については疑問点が非常に明確になっているので、質問に質問を返してより詳細な問題を理解したうえで解答しなければならない労力が無かったので非常に良い質問の仕方だと思います。