こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WorkSheetのChangeイベントの引数

WorkSheetオブジェクトのChangeイベント

ある教材で、TargetがC3のケースを表現する際、
If Target .Row = 4 And .Column = 3 Then
と有った。

回りくどい書き方に見えるのですが、他に表現方法は無いのでしょうか。
この書き方には、何か、理由が有るのでしょうか。
宜しくお願い致します。

投稿日時 - 2018-06-29 15:26:13

QNo.9513409

暇なときに回答ください

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target = Cells(3, 2) Then
  MsgBox ("AAA")
 End If
End Sub

なぜ、↑のような記述ができないのか?
(できるものの正しい動きにならないのか)
を疑問視しているのであれば、それは、正当な疑問と思います。


かぜか?、それは、...

冒頭のような記述をするとVBAは、

 If Target.Value = Cells(3, 2).Value Then
  MsgBox ("AAA")
 End If

と勝手に読み替えてしまうからです。
(気を利かして読み替えてくれるからです。)

投稿日時 - 2018-07-01 07:29:52

お礼

成る程!そうです、何故cellsやrangeで指定出来ないのかと、疑問だったのです。有難う御座います。

投稿日時 - 2018-07-06 13:57:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Address <> "$A$3" Then Exit Sub
 MsgBox ("AAA")
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Address = "$A$3" Then
  MsgBox ("BBB")
 End If
End Sub

といった書き方ができますが、
私は、
行番号と列番号を数値で扱う方が好みです。

投稿日時 - 2018-06-29 20:52:51

お礼

有難う御座います。参考になりました。

投稿日時 - 2018-07-06 13:54:44