##現象
↓ここを見て追試してみた。
[EXCEL]名前定義にはブックとシートの指定があって取り出し方によって値が変わることがある。
素朴にNamesと書くだけの場合ThisWorkbook.Namesを見ているようだ。
当たり前だが、ワークシート指定する場合はWorksheet.Namesを見る。
ところがThisWorkbook.NamesはWorksheets(1).Namesに重複する名前定義があれば上書きされてしまうらしい。
なんちゅう子だ、もしかしたら既知の手遅れな不具合なのかもしれないがorz
###補足
極端なテストケース:ワークシートを1枚にして、1個セルを選んでブックの名前定義"color"を付け、もう1個セルを選んでシートの名前定義"color"を「名前の管理」メニューから新規作成する。テストプログラムを実行すると常にシートの名前定義が使われる。
##対策
- ブックとシートで名前の重複を避ける
- 逐一Worksheet指定する
- Worksheets(1)にシートの名前定義をしていないシートを割り当てる
##テストプログラム
test.xlsm
Sub TriggerObject_Click()
On Error GoTo Err:
Caption = "Plain Names "
MsgBox Caption & Names("color").RefersTo
Caption = "Application "
MsgBox Caption & Application.Names("color").RefersTo
Caption = "ThisWorkbook "
MsgBox Caption & ThisWorkbook.Names("color").RefersTo
Caption = "Worksheets(1) "
MsgBox Caption & Worksheets(1).Names("color").RefersTo
Caption = "ActiveSheet "
MsgBox Caption & ActiveSheet.Names("color").RefersTo
Exit Sub
Err:
MsgBox Caption & "No Name"
Resume Next
End Sub