[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のWorksheet_Change』(S)
特定のセルに特定の文字が入力された際にメッセージを表示するように下記コードをかいたのですが、
(1)(2)の両方を反映させたい場合はどうすればよいでしょうか。
過去ログを参照し色々試してみ間々したがうまくいかないため、
基本的なことで申し訳ないのですがよろしくお願いいたします。
(1)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo wkError
If Intersect(Target, Range("C12")) Is Nothing Then
Exit Sub
Else
If Target.Value = "TEST A" Then
MsgBox "TEST A!!"
End If
End If
wkError:
Err.Clear
End Sub
(2)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo wkError
If Intersect(Target, Range("C15")) Is Nothing Then
Exit Sub
Else
If Target.Value = "TEST B" Then
MsgBox "TEST B!!"
End If
End If
wkError:
Err.Clear
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows7 >
こんな感じで行けると思います。
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("C12", "C15")) Is Nothing Then Exit Sub Select Case Target Case Range("C12") If Target.Value = "TEST A" Then MsgBox "TEST A!!" Case Range("C15") If Target.Value = "TEST B" Then MsgBox "TEST B!!" End Select End Sub (OK) 2020/07/08(水) 19:11
OKさんへ C12セルに "TEST B" と入っていたらマズくないですか?
(半平太) 2020/07/08(水) 20:40
2つのセル限定なら・・
Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address(False, False) Case "C12" If Target.Value = "TEST A" Then MsgBox "TEST A!!" End If
Case "C15" If Target.Value = "TEST B" Then MsgBox "TEST B!!" End If End Select End Sub
何故、On Error GoTo wkError ステートメントが要るのか分からなかったです。
(半平太) 2020/07/08(水) 20:42
わりと良くある質問の部類に入るとおもいますが…
[[20181213154414]] 『Changeイベント 複数』(初心者)
(もこな2 ) 2020/07/08(水) 20:48
必ず、1セルずつしか変更しないのであれば半平太さんのコードで対応できるとおもいますが、複数セルが同時に変わるようなケースもあり得るなら1セルずつ見る必要が出てきます。
Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRNG As Range, tmpRNG As Range Set tmpRNG = Intersect(Target, Range("C12,C15"))
If Not tmpRNG Is Nothing Then For Each MyRNG In Intersect(Target, Range("C12,C15")) Select Case MyRNG.Address(False, False) Case "C12" If MyRNG.Value = "TEST A" Then MsgBox "TEST A!!"
Case "C15" If MyRNG.Value = "TEST B" Then MsgBox "TEST B!!" End Select Next MyRNG End If End Sub
※ 既に半平太さんからコメントがありますが、私もエラートラップはいらないような気がします。
(もこな2 ) 2020/07/08(水) 21:56
> 何故、On Error GoTo wkError ステートメントが要るのか分からなかったです。
分かりました。
Targetが複数セルの場合、 オリジナルのコードはここでトラブるので、その場合はすぐ抜ける為。 ↓ >If Target.Value = "TEST A" Then
(半平太) 2020/07/09(木) 00:02
>C12セルに "TEST B" と入っていたらマズくないですか?
ほんとですね。気づきませんでした。テスト不足でした。
>ChangeイベントのTargetは複数セルになることがあり得るので
これも考慮不足でした。 (OK) 2020/07/09(木) 07:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.