[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Targetが2つある場合』(初心者)
お願いします。
今、自力でVBAを勉強しているのですがネットで
調べながらするのが限界にきています。
2つのセルがあり、どちらかのセルの値が変わったら
VBAを起動させたいです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$P$2") Then
・
・ (コード)
・
End If
End Sub
と作成したのですが
("$N$2")を変更させた時も同じコードを実行させたいです。
やってみたことは
If Target.Address = ("$P$2") Or ("$N$2") Then
単純にやってもエラーがでました。
どなたかよろしくお願いします
< 使用 Excel:unknown、使用 OS:unknown >
If Target.Address(False, False) = "P2" Or Target.Address(False, False) = "$N$2" Then (tkit) 2021/10/12(火) 16:32
修正します。 If Target.Address(False, False) = "P2" Or Target.Address(False, False) = "N2" Then
If文は判定式がTrueかFalseかで判定します。 Target.Address = ("$P$2") Or ("$N$2") では式になっていません。
(tkit) 2021/10/12(火) 16:36
無事、思っている動きができました。
早々の対応ありがとうございました。
(初心者) 2021/10/12(火) 16:39
比較演算子の = と 論理演算子の Or をつかっていますが、 = も Or も二項演算子です。 そして優先順位は、 比較演算子 > 論理演算子 です。 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-precedence
If Target.Address = "$P$2" Or "$N$2" Then は If ( Target.Address = "$P$2" ) Or "$N$2" Then です その結果、 Target.Address = "$P$2" のとき If True Or "$N$2" Then となり Target.Address <> "$P$2" のとき If True Or "$N$2" Then となります。 先に書いたとおり、Or 演算子は二項演算子で、前後の項は論理値である必要がありますが、 後の項が文字列のためエラーになります。 (´・ω・`) 2021/10/12(火) 16:39
こんなのも If Intersect(Target, Range("N2,P2")) Is Nothing Then Exit Sub TargetがN2セル、P2セルの時の処理
(ねむねむ) 2021/10/12(火) 16:41
Or案は1セルのみ更新された時に発動
Intersect案はそれに加えて複数セルを選択してDELしたり、複数セルをコピー貼り付けしたときなども発動します。
どちらが、要件にあうのかよくよく検討して採用するといいでしょう。
(hatena) 2021/10/12(火) 19:59
>Intersect案はそれに加えて複数セルを選択してDELしたり、複数セルをコピー貼り付けしたときなども発動します。 おっとそれがあったか もし、複数セルにも対応であればその後の処理でTargetを使っては出来ないだろうこともあるので Dim WK_RANGE AS Range とレンジオブジェクト変数を用意して For Each WK_RANGE In Intersect(Target, Range("N2,P2")) WK_RANGEに対する処理 Next としてみてくれ。 (ねむねむ) 2021/10/13(水) 09:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.