• ベストアンサー

エクセル イベントマクロ Changeイベントを複数作りたい

Private Sub Worksheet_Change(ByVal Target As Range)   If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub 以下マクロの内容 End Sub これでセルA1が変わるとイベントマクロが発生しますが セルB1が変わると別のマクロが発生し セルC1が変わるとまた別のマクロが発生し…とするには どうすればよいのですか 単純に並べて書いたらだめみたいだったんですけど

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$A$1"  A1のマクロ文 Case "$B$1"  B1のマクロ文 Case "$C$1"  C1のマクロ文 ・・・・ End Select End Sub こんな感じでは?

48946
質問者

お礼

有難うございます 上手くいきました

その他の回答 (2)

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

>セルA1が変わるとイベントマクロが発生しますが >セルB1が変わると別のマクロが発生し >セルC1が変わるとまた別のマクロが発生し 同じ1つのChngeイベントで受けて Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$A$1" MsgBox "A処理実行" Case "$B$1" MsgBox "B処理実行" Case "$C$1" MsgBox "C処理実行 " End Select End Sub のようにセルのアドレスで区別すればよいのでは。 InterceptやCase文を使わず、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then MsgBox "A処理実行" ElseIf Target.Address = "$B$1" Then MsgBox "B処理実行 " Else MsgBox "C処理実行 " End If End Sub でもできる。(コード表現だけの問題だが) それでは困るケースがありますか。

48946
質問者

お礼

有難うございます 上手くいきました

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

例えば、こんな感じで如何ですか。 Private Sub Worksheet_Change(ByVal Target As Range)   If Not Intersect(Target, Range("A1")) Is Nothing Then     MsgBox "セル A1 が変更になりました。" ' <--- A1変更時の処理   End If   If Not Intersect(Target, Range("B1")) Is Nothing Then     MsgBox "セル B1 が変更になりました。" ' <--- B1変更時の処理   End If   If Not Intersect(Target, Range("C1")) Is Nothing Then     MsgBox "セル C1 が変更になりました。" ' <--- C1変更時の処理   End If End Sub > Select Case Target.Address > Case "$A$1" > A1のマクロ文 これ↑では、複数セル同時変更したとき、その中に該当セルがあっても機能しないと思いますが・・・ これでも良い仕様であれば別ですが・・・

48946
質問者

お礼

有難うございます 上手くいきました

関連するQ&A