1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

デフォルトのNamesプロパティに注意

現象

↓ここを見て追試してみた。
[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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?