ある文字の時にイベント発生(失敗談)
昨日のこと。メールで、こんな依頼が舞い込んできた。
A1の値がA(りんご)になったとき、イベントを発生させたい。
了解、やりましょう。
確認したところ、A1にはリストが設定されていた。
ここで「A(りんご)」を選んだ時に、何某かの処理を行いたいらしい。
そこで、WorksheetのChangeイベントを設定した。処理発生条件は間違えないように、受領したメールからコードにコピペした。
Private Sub Worksheet_Change(ByVal Target As Range) ' 無限ループ発生防止。 Application.EnableEvents = False Select Case Target(1).Address(0, 0) Case "A1" If Target(1).Value = "A(りんご)" Then MsgBox "イベント発生" End If End Select Application.EnableEvents = True End Sub
ところが、楽勝だと思っていたこの依頼、全く上手くいかなかった。A(リンゴ)を選んでも、想定したイベントが全く発生しなかったのだ。
確認に悪戦苦闘すること30分、画面を眺めていて気が付いた。
コード:A(りんご)
画 面:A(リンゴ)
そりゃあ、動かんわな。特に今回は、文字の先頭にある「A」ばかり見ていたため、後半の「りんご」と「リンゴ」の違いが気づき難いものとなっていた。
【今回の教訓】
- 条件は、正しく伝えよう。
- 鵜呑みは危険。必ず確認しよう。
参考まで。