プロが教える店舗&オフィスのセキュリティ対策術

https://ja.extendoffice.com/documents/excel/3923 …

上記の内容を参考にVBAを使いたいのですが、
例だとB1からB10セルまでの範囲が対象となります。

たとえば、この範囲が
B1からB10
D1からD10
F3~F5

といったように、複数の範囲となる場合はどのように記述すればよろしいですか?
なお、複数範囲は間で別の記述があるため、まとめて一つ(B1からF10)のようには
いかないです。

説明不足がありましたら、ご指摘ください。

A 回答 (2件)

If Not Intersect(Target, Range("B1:B10")) Is Nothing Then





If Not Intersect(Target, Range("B1:B10,D1:D10,F3:F5")) Is Nothing Then

のように。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。うまくできました。

お礼日時:2021/07/30 05:52

こんばんは、


範囲の指定の仕方ですね。
If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
この意味は理解しているとして"B1:B10"が対象の範囲です。

指定方法はいくつかあるのですが、コードを書いて説明するより
多分今後も活用できる簡単な方法を提案します。

Excelにはマクロの自動記録があります。
その範囲を選択して記録すればコードが作れますので参考になります。
実は書く時に面倒な複雑な範囲のクリアーなどの場合、私は今でも使っています。(だってミスが少ないから)

A1(該当しない)セルを選択して 記録を開始して
Ctrl+で選択していきます。(これはご存知かと)
すべてを選択して記録を終了する
標準モジュールに Sub Macro?()のプロシージャが出来ます
範囲を選択したコードが出来ますので、参考にして

Range("B1:B10")の"B1:B10"部分をそっくりコピペなどで書き直すと
対象範囲がダブルクリック時に発生する処理範囲になりますね

コードはべたな範囲指定方法になりますが、Range指定の方法を覚えていくうちにべたコードを書き直せたり、サラッとかけるようになりますよ。

OffsetやResizeなどを覚えていくにしたがって色々な書き方が出来るようになると思いますが、取り敢えず記録される指定方法から覚えるのが良いと思います。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
Intersect関数を調べ、
Intersect(Target, Range("B1:B10"),Range("D1:D10"))Is~ のように
記述していたことが原因でした。
Range内で複数指定すれば良かったんですね。

マクロ記録なども参考に、自己解決できるように頑張ります。

お礼日時:2021/07/30 05:56

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A