|
こんばんは。
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address = "$B$4" And Target.Value <> "" Then Call AAA
> If Target.Address = "$E$5" And Target.Value = 2 Then Call BBB
>End Sub
>
>B4に何か入れるとAAAを呼び出す
>E5に何か入れるとBBBを呼び出す
>という式をつくりました。
>しかし、
>手でA1とA2をコピーし、B1とB2に貼り付けようとすると
>Target.Addressに"$B$1:$B$2"をいれようとしてエラーになります。(型の不
>一致)
>複数のセルの値をDELETEとしようとしてもエラーになってしまいます。
>IF文とは関係ないところに手をつけたのになぜ起こったのか、わからないです
>。
ひげくまさんの回避方法でよいと思いますが・・・。
基本として、VBAの and 演算子の仕様を理解されていないと
こういうコードを書いてしまいます。
VBAの AND演算子は、
条件1 AND 条件2 とあった場合、
条件1がFalseでも 条件2の評価をしてしまいます。
言語のよっては、条件1がFalseなら、条件2は評価しない仕様になっているものも
あります。その場合は、ごろりさんのコードでも良いのですが、
VBAのANDは違うのです。
よって、Target.Value <> "" これを評価するときにエラーが発生しています。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim crng As Range
For Each crng In Target
If crng.Address = "$B$4" And crng.Value <> "" Then Call AAA
If crng.Address = "$E$5" And crng.Value = 2 Then Call BBB
Next
End Sub
こんな方法も検討してみてください。
これだとコピーやDeleteにも対応します。
|
|