【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー
トの中のどのセルを変化させてもマクロが実行されるのですが、これ
を、A1とc1とc2が変化したときだけ処理を実行させたいのです。

以下のマクロのどこかを編集すると、そのようなことが出来るのでし
ょうか?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
----実行する内容----
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
----実行する内容----
End Sub

A 回答 (4件)

(1)セル範囲の行(Target.Row)や列(Target.column)を見て、以下や以上かのIF文でチェック


(2)セル番地をArray関数で定義しておき、Targetと1つづつ該当するかチェック。飛び離れたセルなどのとき
(3)セル範囲(Range)とTargetがInterseectするか判別。
http://www.geocities.co.jp/SiliconValley-SanJose …
Intersect VBAで照会のこと。
    • good
    • 1
この回答へのお礼

このサイト、古いですが、基本的なことがいろいろ書かれていますね。
ありがとうございます。

お礼日時:2007/01/19 19:14

回答はでてますが、念のため。



ご存知かもしれませんが、処理の中でセルの内容を書き換える場合は Application.EnableEvents の設定を忘れずに行ってください。これを忘れると無限にイベントが呼び出される恐れがあります。

Private Sub Worksheet_Change(ByVal Target As Range)
'Targetの範囲チェック処理
Application.EnableEvents = False
'更新処理
Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

そんな処理が必要なときもあるんですね。勉強になります

お礼日時:2007/01/19 19:10

#1です。



>'A1セル以外が変更されたら何もしない

↓の間違いでした。

'A1、C1、C2セル以外が変更されたら何もしない
    • good
    • 0

↓のような感じでイベントの発生を制御できます。



'A1セル以外が変更されたら何もしない
If Intersect(Target, Range("A1,C1,C2")) Is Nothing Then Exit Sub
    • good
    • 1
この回答へのお礼

ありがとうございます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
これに組み込んで出来ました。
intersect いろいろと使えそうですね

お礼日時:2007/01/19 19:08

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