[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルが空白(0)の場合ENTERキーでのChangeイベントを起動させない記述は』(森野ふくろう)
下記記述ではセルの数値をクリアしても起動してしまいます。
今と同じようにセルに入力し直さない時と空白=0の時もイベントが起動しないようにするにはどうすればいいでしょうか。
よろしくお願いいたします。
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(False, False) Case "H2" 'このセルが変更されたら---(1) Call 移動 'このマクロを起動する---(2) Case "I2" 'このセルが変更されたら---(1) Range(("J" & Range("I2") + "5")).Select 'このセルに移動する---(2)
Case Else End Select End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
If Target.Value = "" Then Exit Sub (どん) 2020/12/30(水) 22:16
(森野ふくろう) 2020/12/30(水) 22:29
複数セルに入力するとコケるので If Target.Count <> 1 Then Exit Sub If Target.Value = 0 Then Exit Sub
(どん) 2020/12/30(水) 22:50
(森野ふくろう) 2020/12/30(水) 22:56
■1
既にコメントがあるように、Changeイベントはtargetが複数になることがあり得るので、セルのアドレスで判定するのはあまりお勧めしません。
■2
Targetが複数セルだった場合、Valueプロパティは配列を返すので「Target.Value = 0」だとまずいです。
(どんさんの提案は事前に単一セルであるかを判定しているため問題ないです)
■3
Range(("J" & Range("I2") + "5")).Select
↑って思い通りになってますか?
2重括弧の必要があるのか疑問なのと、「+ "5"」のように、文字の5を結合しようとしている?のが少々気になります。
■4
>イベントが起動しないよう
基本的にセルの値が変更された時点で、イベントは起動します。
なので、「イベントを発生させない」ではなく、「イベントが発生したあと、条件に応じてそれぞれの処理をする」と考えたほうがよいとおもいます。
Private Sub Worksheet_Change(ByVal Target As Range) Select Case True
'▼書き換えられたセルに「H2セル」が含まれるか判定して真なら処理 Case Not Intersect(Target, Range("H2")) Is Nothing If Range("H2").Value <> 0 Then Call 移動 End If
'▼書き換えられたセルに「I2セル」が含まれるか判定して真なら処理 Case Not Intersect(Target, Range("I2")) Is Nothing If Range("I2").Value <> 0 Then Range(("J" & Range("I2").Value + "5")).Select End If
End Select End Sub
(もこな2 ) 2020/12/31(木) 12:45
イベント対象のセルは2個を超えることはなく、どんさまからご指導いただきました記述で希望通りの動きがありますが、上記に変更させていただきました。
年末御多忙の中ありがとうございました。
(森野ふくろう) 2021/01/01(金) 20:38
あまりやらないかもしれませんが、複数セルを選択してから、何か入力して確定にCtrl+Enterを使うと、【同時に複数の】セルの書き換えが発生します。
また、セル範囲を貼付することでも【同時に複数の】セルが書き換えられますし、なにより範囲選択してDeleteを押してクリアすることでも【同時に複数の】セルが書き換えられます。
もともと単一セルだけの書き換えに対応したいということであれば、どんさんが示されているように単一セルじゃなければ処理を終わらせるようにすればよいですが、貼付や範囲クリアは発生しがちな処理だとおもうので必要があれば考えておいた方がよいとおもいます。
■6
↓のようにした場合、I2セルに数値として見なせないものがあった場合、それはそれでこまりませんか?
Range("J" & Range("I2") + 5).Select
(もこな2) 2021/01/02(土) 00:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.