• ベストアンサー

セルを指定したVBA

お願いします。 以前、このカテゴリーの質問で、特定のセルをダブルクリックすると”○”が入力されるコードがあり、重宝させてもらっています。 ただ、シート全体で適用となっているため、どのセルをWクリックしても”○”が入力されます。 特定のセルのみ適応されるような範囲指定のVBAはどのように記述したらいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#2のmerlionXXです。 特定の範囲に限定の場合、範囲指定にUnionを使わなくとも Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:C10,E1:F10")) Is Nothing Then Exit Sub MsgBox Target.Address Cancel = True End Sub で出来ますね。こっちの方が簡単ですね。

cb1986
質問者

お礼

merlionXXさん 範囲指定のコードを何度か見直しまでしていただきまして 大変恐縮です。 よく理解できました。 次回からも応用してゆけそうです。 「すぐ回答ほしい」で質問していたのですが間に合いました。 ありがとうございました!

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>特定のセルをダブルクリックすると >シート全体で適用となっているため の関係が矛盾した記述のように思うが。 ひょっとして、後者はSheet1でもSheet2でもSheet3・・でもイベントの発動が起こるということですか。 Sheet1の全セルでイベントが働く(語弊がありますが)ようだと、クリックしたセルがTargetでわかるので、そのアドレスを 限定し、その範囲外なら、処理を何もしないで抜ければよい。 IF 行範囲が範囲内、列範囲が範囲内 Thenとか範囲と Intersect(メソッドあり)するかどうかを判別とか。 「Intersect VBA」でWEB照会すると質問と似たような 解説が沢山でる。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=312058&rev=1 後者だとThisworkbookのイベントから、個別のSheet1などのイベントに鞍替えすればよいと思う。

cb1986
質問者

お礼

imogasiさん お礼が遅くなりました。 imogasiさんのご回答含め、intersect VBAの解説サイトも 非常に役に立ちました。考えていたシート構成にもより 幅が生まれる結果になりました。 ありがとうございました!

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

特定の範囲に限定 範囲が、Range("A1:C10")とRange("E1:F10")の場合の例 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Union(Range("A1:C10"), Range("E1:F10"))) Is Nothing Then Exit Sub MsgBox "ダブルクリックされました。" Cancel = True End Sub 一つのセルだけに限定 Range("A1") だけの場合の例 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub MsgBox "ダブルクリックされました。" Cancel = True End Sub

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1
cb1986
質問者

お礼

mitarashiさん ありがとうございます。 他の類似する質問、非常に参考になりました。 気になった質問はスクラップしてゆきます。 ありがとうございました!

関連するQ&A