ExcelマクロVBA入門 | 第92回.名前定義(Names) | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2018-02-02

第92回.名前定義(Names)


名前定義をマクロVBAで扱う場合の解説になります、

名前定義は、複数セル範囲や単一セル範囲に対して名前を付けることで、

そのセル範囲を参照する時に名前で参照できるようにするものです。

名前で参照できることで、セル位置(行位置、列位置)を固定値でしなくて済むようになります。



名前定義の作成は、
WorkBookオブジェクトまたはWorkSheetオブジェクト
のNamesコレクションにNameオブジェクトを追加することで行います。

Namesコレクション
Nameオブジェクト
順に詳細仕様をみてみましょう。


Namesコレクション

Namesコレクションのプロパティ、メソッド一覧

名前 説明
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
Count コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
メソッド Add セル範囲の新しい名前を定義します。
追加されたNameオブジェクトが返されます。
Item Names コレクションから、単一の Name オブジェクトを返します。


名前定義を追加するには、Addメソッドを使用します。

Addメソッド
式.Add(Name, RefersTo, Visible, MacroType, ShortcutKey, Category, NameLocal, RefersToLocal, CategoryLocal, RefersToR1C1, RefersToR1C1Local)

式には、
WorkBookオブジェクト
WorkSheetオブジェクト

これらが指定できます。

戻り値はNameオブジェクトになります。

Name NameLocal パラメーターが指定されていない場合は、名前として使用する文字列を英語で指定します。
名前には、スペースを含めることはできません。また、セル参照として書式を設定することもできません。
RefersTo RefersToLocal、RefersToR1C1、および RefersToR1C1Local パラメーターが指定されていない場合は、A1 形式の表記法を使用して英語で名前の参照先を指定します。
参照が存在しない場合は、Nothing が返されます。
Visible 名前を表示する場合は True を指定します。名前を非表示にする場合は False を指定します。非表示の名前は、[名前の定義]、[名前の貼り付け]、および [ジャンプ] ダイアログ ボックスに表示されません。既定値は True です。
MacroType マクロの種類を、次のいずれかの値で指定します。
1 - ユーザー定義関数 (Function プロシージャ)
2 - マクロ (Sub プロシージャ)
3 または省略 - なし (定義した名前はユーザー定義関数またはマクロを参照しません)
ShortcutKey マクロのショートカット キーを指定します。"z" または "Z" のように、アルファベットの 1 文字を指定します。コマンド マクロに対してのみ適用されます。
Category MacroType 引数が 1 または 2 のときに、名前が参照するマクロや関数の分類を指定します。これは、関数ウィザードで使われる分類です。既存の分類では 1 から順に決まっている番号、または英語で分類名を指定できます。また、既存の分類以外の分類名を指定すると、自動的に新しい分類として追加されます。
NameLocal Name パラメーターが指定されていない場合は、名前として使用するローカライズされた文字列を指定します。名前には、スペースを含めることはできません。また、セル参照として書式を設定することもできません。
RefersToLocal RefersTo、RefersToR1C1、および RefersToR1C1Local パラメーターが指定されていない場合は、A1 形式の表記法を使用してローカライズされた文字列で名前の参照先を指定します。
CategoryLocal Category パラメーターが指定されていない場合は、ユーザー設定関数の分類を示すローカライズされた文字列を指定します。
RefersToR1C1 RefersTo、RefersToLocal、および RefersToR1C1Local パラメーターが指定されていない場合は、R1C1 形式の表記法を使用して英語で名前の参照先を指定します。
RefersToR1C1Local RefersTo、RefersToLocal、および RefersToR1C1 パラメーターが指定されていない場合は、R1C1 形式の表記法を使用してローカライズされた文字列で名前の参照先を指定します。

使用例.

ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=Sheet1!$A$1:$B$2"

ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=Sheet1!R1C1:R2C2"

どちらも、A1〜B2セル範囲に、「test」で名前定義を追加しています。

注意したいのは、シート名を含めて指定している点です。

指定しなければ、アクティブシートになりますが、指定するようにして下さい。

また、2007以降では、シート毎に名前定義を追加できますが、

あまり使用しない方が良いでしょう、間違いのもとになります。



Nameオブジェクト

Nameオブジェクトのプロパティ、メソッド一覧

名前 説明
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
Category 指定された名前がユーザー定義の関数やマクロ (マクロ シートの関数マクロやコマンド マクロ) を参照するように定義されている場合は、その分類名をコード記述時の言語の文字列として設定します。
値の取得および設定が可能です。文字列型 (String) の値を使用します。
CategoryLocal 指定された名前がユーザー定義の関数やマクロ (マクロ シートの関数マクロやコマンド マクロ) を参照するように定義されている場合は、その分類名をコード実行時の言語の文字列として設定します。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Comment 名前に関連付けられたコメントを設定します。値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Index 類似するオブジェクトのコレクション内でのオブジェクトのインデックス番号を表す長整数型 (Long) の値を返します。
MacroType 指定した名前が何かを示す定数を設定します。値の取得および設定が可能です。
XlXLMMacroType クラスの定数を使用します。
Name オブジェクトの名前を表す文字列型 (String) の値を取得、または設定します。
NameLocal コード実行時の言語でオブジェクトの名前を設定します。値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
RefersTo 名前の参照先を示す数式を文字列として設定します。
数式は等号 (=) で始まり、A1 形式で、コード記述時の言語で表します。
値の取得および設定が可能です。文字列型 (String) の値を使用します。
RefersToLocal 指定された名前が参照している数式 (セル範囲) を設定します。
数式は等号 (=) で始まり、A1 形式で、コード実行時の言語の文字列です。
値の取得および設定が可能です。文字列型 (String) の値を使用します。
RefersToR1C1 指定された名前が参照している数式 (セル範囲) を設定します。
数式は等号 (=) で始まり、R1C1 形式で、コード記述時の言語の文字列です。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
RefersToR1C1Local 指定された名前が参照している数式 (セル範囲) を設定します。
数式は等号 (=) で始まり、R1C1 形式で、コード実行時の言語の文字列です。
値の取得および設定が可能です。文字列型 (String) の値を使用します。
RefersToRange Name オブジェクトの参照先の Range オブジェクトを取得します。
値の取得のみ可能です。
ShortcutKey Excel 4.0 のユーザー定義マクロ コマンドとして定義されている名前にショートカット キーを設定します。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
ValidWorkbookParameter 指定された Name オブジェクトが有効なブック パラメーターである場合、True を返します。
値の取得のみ可能です。ブール型 (Boolen) の値を使用します。
Value 名前の参照先を示す数式表す文字列型 (String) の値を取得、または設定します。
Visible オブジェクトを表示するかどうかを表すブール型 (Boolean) の値を設定します。
値の取得および設定が可能です。
WorkbookParameter 指定された Name オブジェクトをブック パラメーターとして取得または設定します。
値の取得および設定が可能です。
メソッド Delete オブジェクトを削除します。

NamesコレクションのAddメソッドの引数で通常必要なものは指定できるので、
Nameオブジェクトのプロパティを使う事はあまりありません。
従って、実際に使うのは、
Deleteメソッドくらいになります。



名前定義の削除

ActiveWorkbook.Names(1).Delete

または、

ActiveWorkbook.Names("名前").Delete



実践例



名前定義は、
マクロVBAでセル位置を特定するばあいに重要な役割を持ちます。
積極的に使ってみて下さい。




同じテーマ「マクロVBA入門」の記事

第89回.オートフィルタ(AutoFilter)
第90回.フィルタオプションの設定(AdvancedFilter)
第91回.条件付き書式(FormatCondition)
第92回.名前定義(Names)
第93回.ピボットテーブル(PivotTable)
第94回.コメント(Comment)
第95回.ハイパーリンク(Hyperlink)
第96回.グラフ(Chart)
第97回.図形(Shape)
第98回.Findメソッド(Find,FindNext,FindPrevious)
第99回.Replaceメソッド(置換)

新着記事 ・・・新着記事一覧を見る

数値範囲で表検索するVLOOKUP近似一致|エクセル関数超技(10月5日)
エクセルVBAでのシート指定方法|VBA技術解説(9月8日)
VBAのクラスとは(Class,Property,Get,Let,Set)|VBA技術解説(8月28日)
VBAこれだけは覚えておきたい必須基本例文10|VBA技術解説(8月22日)
VBAの省略可能な記述について|ExcelマクロVBA技術解説(8月11日)
複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数とデータ型(Dim)|ExcelマクロVBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.マクロって何?VBAって何?|ExcelマクロVBA入門
7.定数と型宣言文字(Const)|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 名前定義(Names)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。





    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ

    ↑ PAGE TOP