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に名前を付けます。式 > 名前マネージャ > 新規…を実行します。 (次の図を参照)
「新しい名前」ウィンドウで、名前と範囲、説明、参照先を設定します。
ここで「範囲」とは、その名前を参照する有効範囲を意味し、どちらかを選択することができる。
- シート(例:Sheet1):そのシートで作成したVBAコードでのみ名前を参照できます
- 統合文書:シート全体、モジュール、クラスなどで名前を参照可能
参考までに、シートに定義されている名前は、シートをコピーするときに一緒にコピーされます。このとき、複数のシートで同じ名前を参照する必要がある場合は「シート」に設定し、同じ名前を参照する必要がない場合は「統合文書」に設定します。名前を作成すると、次のように結果を確認できます。
名前を定義したセルを選択すると、名前ボックスに名前が表示されます。
名前が定義されていないセルを選択すると、[名前]ボックスにそのセルの絶対アドレスが表示されます。
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コーディングに役立つことを願っていますが、質問はコメントを残してください。