VBAコーディングパターン:Named Range(名前付き範囲)

VBAコーディング時にRangeの参照アドレスが変更されても、Named Range(名前付き範囲)を使用すると、参照アドレスの変更に関係なくソースコードが変更されないようにすることができる。次の内容を見てみましょう。

1. 絶対アドレスを使用した Range 参照

Excel VBAでRangeを参照するいくつかの方法のうち、最も頻繁に使用する方法は次のとおりです。

Dim sVal As String
sVal = Range("B2").Value2
Debug.Print sVal

Range(「B2」)では、「B2」はExcelシート上のセルの絶対アドレスを表します。シートの形状を変更して行を追加したり、列を追加する場合は、「B2」を「B3」または「C2」などに変更する必要があります。 cell 絶対アドレスがVBAコード上に1か所にしかないと、ただ簡単に変更できますが、複数のファイル、複数のprocedure、functionなどに広がっている場合、コードを修正する作業は簡単ではありません。

参照するRange(範囲)の変更がVBAコードの変更に影響を与えないようにするには、Range(範囲)に名前を付けてVBAコードにセルの絶対アドレス以外の名前を参照させ、参照する場所が変更された場合にその名前を指定します。で指定されたセルアドレスを変更すればよい。

2. 名前を使用した Range 参照

2.1。 Named Range (名前付き範囲)の生成

まず、次の手順を実行してRangeに名前を付けます。式 > 名前マネージャ > 新規…を実行します。 (次の図を参照)

그림1. 이름 생성
図1。名前の生成

「新しい名前」ウィンドウで、名前と範囲、説明、参照先を設定します。

그림2. 이름 설정
図2名前設定

ここで「範囲」とは、その名前を参照する有効範囲を意味し、どちらかを選択することができる。

  • シート(例:Sheet1):そのシートで作成したVBAコードでのみ名前を参照できます
  • 統合文書:シート全体、モジュール、クラスなどで名前を参照可能

参考までに、シートに定義されている名前は、シートをコピーするときに一緒にコピーされます。このとき、複数のシートで同じ名前を参照する必要がある場合は「シート」に設定し、同じ名前を参照する必要がない場合は「統合文書」に設定します。名前を作成すると、次のように結果を確認できます。

그림3. 이름 생성 결과
図3名前生成結果

名前を定義したセルを選択すると、名前ボックスに名前が表示されます。

그림4. 이름이 부여된 범위 선택시 해당 이름 표시
図4。名前付き範囲を選択したときにその名前を表示

名前が定義されていないセルを選択すると、[名前]ボックスにそのセルの絶対アドレスが表示されます。

그림5. 이름이 부여되지 않은 범위 선택시 범위 절대주소 표시
図5名前のない範囲を選択した場合の範囲絶対アドレスの表示

2.2.名前参照コードの記述

名前の定義が完了したら、定義した名前を参照してVBAコードを作成します。簡単な例は次のとおりです。

Dim sVal As String
sVal = Range("BaseRange").Value2
Debug.Print sVal

2.3。名前の使用の利点

絶対アドレスが変更される場合、その名前が参照する絶対アドレスを変更すればよい。 VBAのソースコード全体を見つけて変える必要がないので簡単だ。

列または行が追加または削除されると、名前が参照する絶対アドレスは自動的に変更されます。たとえば、「B2」セルを参照する名前がある場合、1行と2行の間に行を1つ追加すると、自動的に「B3」に変更されます。

VBAコードを読むと読みやすくなります。ソースコード上で「B2」がどんな意味なのかを知るにはシートを開いて見なければならないが、「BaseRange」、「TableListBase」、「ColumnListBase」、「ValueListBase」などの名前を使用すれば、シートを開いてみる必要なく意味把握これははるかに簡単になります。

追加内容は Excel ネーム マネージャーの使用 (microsoft.com) で確認できる。


以上、Range(範囲)に名前を使用する方法と利点を見てみました。 VBAコーディングに役立つことを願っていますが、質問はコメントを残してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ja日本語