名前定義の作成・変更(シート範囲)

Names.Addメソッドはシート範囲の名前定義を作成変更するメソッドです。

'アクティブシートの選択範囲で名前定義
ActiveSheet.Names.Add Name:="作成名前定義1", RefersTo:="=" & Selection.Address

↑アクティブシートの場合

'指定シートの指定範囲で名前定義
Worksheets("Sheet1").Names.Add Name:="作成名前定義1", RefersTo:="=$A$1:$A$10"

↑アクティブ以外のシートの場合

シート範囲での名前定義をするには「Names.Add」メソッドをシート指定して使用します
指定した名前の名前定義が存在しない場合は新規作成され、存在する場合はセル範囲が更新されます

シート範囲で名前定義を行うと、その名前定義をシート内でしか使用できません
別のシートから参照するには、シートの指定から行う必要があります

コードの解説

「ActiveSheet.Names.Add Name:=”作成名前定義1”, RefersTo:=”=” & Selection.Address」
アクティブシートの選択範囲を名前定義します
引数「Name」は名前定義の名前文字列
引数「RefersTo」にはセルのアドレス文字列を指定します、セル範囲そのものではないのでRangeのAddressプロパティを使用します

アクティブシートの選択範囲なので、動的に名前定義する際に使用します

「Worksheets(“Sheet1″).Names.Add Name:=”作成名前定義1”, RefersTo:=”=$A$1:$A$10″」
引数の解説は上記と同じです
今回違う点が、シートを指定しているのと「RefersTo」にアドレス文字列が指定されているところです

この様に指定することで、アクティブシート以外のシートを指定することが可能です
また、シートを適用範囲とするメソッドなのでアドレス指定にはシートの指定は必要ありません、省略すると対象シートが指定されます

使用場面

シート範囲の名前定義とは、別のシートからは参照できないようにシート内でのみ有効な名前定義になります

これを使用する場面は、同じ目的の名前定義を複数作成することで管理がめんどうになるのを防ぐ意味で使用します

シートごとに違う名前を指定する必要があるブック範囲ではコードの作成にも利便性が無いので、同じ名前の指定をしておけばシートを切り替えるだけで同じ名前定義を使用することができます

名前定義したセル範囲を指定する際には、別シートであればシートからの指定が必要になる点は注意が必要です