1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-03-05

##現象
↓ここを見て追試してみた。
[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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?