ある文字の時にイベント発生(失敗談)

昨日のこと。メールで、こんな依頼が舞い込んできた。

A1の値がA(りんご)になったとき、イベントを発生させたい。

了解、やりましょう。
f:id:Infoment:20190807214100p:plain

確認したところ、A1にはリストが設定されていた。
f:id:Infoment:20190807214916p:plain

ここで「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」ばかり見ていたため、後半の「りんご」と「リンゴ」の違いが気づき難いものとなっていた。

【今回の教訓】

  1. 条件は、正しく伝えよう。
  2. 鵜呑みは危険。必ず確認しよう。

参考まで。