名前付きセル範囲を参照する
A1 形式の参照よりも、名前でセル範囲を指定する方が簡単です。 選択したセル範囲に名前を付けるには、数式バーの左端にある名前ボックスをクリックし、名前を入力して、Enter キーを押します。
メモ 名前付き範囲には、ブックの名前付き範囲と WorkSHEET 固有の名前付き範囲の 2 種類があります。
ブックの名前付き範囲
ブックの名前付き範囲は、ブック内の任意の場所から特定の範囲を参照します (グローバルに適用されます)。
Range という名前のブックを作成する方法
前述したように、通常は、数式バーの左端の [名前] ボックスに名前を入力すると作成されます。 名前にスペースは許可されません。
ワークシートの特定の名前付き範囲
A WorkSHEET Specific Named Range refers to a range in a specific worksheet, and it is not global to all worksheets within a workbook. 同じワークシート内の名前だけでこの名前付き範囲を参照しますが、別のワークシートでは、範囲の名前を含むワークシート名を使用する必要があります (例: 範囲 "Name" "=Sheet1!Name")。
The benefit is that you can use VBA code to generate new sheets with the same names for the same ranges within those sheets without getting an error saying that the name is already taken.
ワークシートの特定の名前付き範囲を作成する
- 名前を指定する範囲を選択します。
- ウィンドウの上部にある Excel リボンの [数式] タブをクリックします。
- [数式] タブの [名前の定義] ボタンをクリックします。
- [新しい名前] ダイアログ ボックスの [スコープ] フィールドの下で、定義する範囲がある特定のワークシートを選択します (たとえば、"Sheet1")。これにより、このワークシート固有の名前になります。 "Workbook" を選択した場合は、それがブックの名前になります)。
WorkSHEET 固有の名前付き範囲の例: 名前に対して選択された範囲は A1:A10 です
選択した名前の範囲は、同じワークシート内の "name" です。他のワークシートから "=name" セルに次を入力することで、名付けられた "name" を参照します。"=Sheet1!name" セルにワークシート名を含めることによって、ワークシートの特定の範囲を参照します。
名前を付けたセル範囲を参照する
次の使用例は、MyBook.xls というブックの MyRange という名前のセル範囲を参照します。
Sub FormatRange()
Range("MyBook.xls!MyRange").Font.Italic = True
End Sub
次の使用例は、Report.xls というブックの Sheet1!Sales という、シート指定も含んだ名前のセル範囲を参照します。
Sub FormatSales()
Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
End Sub
名前を付けたセル範囲を選択するには、GoTo メソッドを使います。このメソッドは、指定されたセル範囲があるブックのワークシートをアクティブにし、そのセル範囲を選択します。
Sub ClearRange()
Application.Goto Reference:="MyBook.xls!MyRange"
Selection.ClearContents
End Sub
上記のアクティブ ブック内にあるセル範囲を選択するには、次の使用例のように記述することもできます。
Sub ClearRange()
Application.Goto Reference:="MyRange"
Selection.ClearContents
End Sub
サンプル コードの提供元: Dennis Wallentin、VSTO & .NET & Excel
この例は名前付き範囲をデータの入力規則用の式として使用します。 この例では、シート 2 の範囲 A2:A100 に検証データが含まれている必要があります。 この検証データを使用して、シート 1 の範囲 D2:D10 に入力されたデータを検証します。
Sub Add_Data_Validation_From_Other_Worksheet()
'The current Excel workbook and worksheet, a range to define the data to be validated, and the target range
'to place the data in.
Dim wbBook As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
Dim rnTarget As Range
Dim rnSource As Range
'Initialize the Excel objects and delete any artifacts from the last time the macro was run.
Set wbBook = ThisWorkbook
With wbBook
Set wsSource = .Worksheets("Sheet2")
Set wsTarget = .Worksheets("Sheet1")
On Error Resume Next
.Names("Source").Delete
On Error GoTo 0
End With
'On the source worksheet, create a range in column A of up to 98 cells long, and name it "Source".
With wsSource
.Range(.Range("A2"), .Range("A100").End(xlUp)).Name = "Source"
End With
'On the target worksheet, create a range 8 cells long in column D.
Set rnTarget = wsTarget.Range("D2:D10")
'Clear out any artifacts from previous macro runs, then set up the target range with the validation data.
With rnTarget
.ClearContents
With .Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Formula1:="=Source"
'Set up the Error dialog with the appropriate title and message
.ErrorTitle = "Value Error"
.ErrorMessage = "You can only choose from the list."
End With
End With
End Sub
名前を付けたセル範囲内をループする
次の例では、For Each...Next ループを使用して、指定した範囲内の各セルをループで操作します。 範囲内のセルで、値が変数 Limit
よりも大きいセルを黄色にします。
Sub ApplyColor()
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
c.Interior.ColorIndex = 27
End If
Next c
End Sub
投稿者について
Dennis Wallentin は、Excel および Excel Services の .NET Framework ソリューションを重点的に扱うブログである VSTO & .NET & Excel の作者です。 Dennis は 20 年以上 Excel ソリューションを開発しており、また『Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA, and .NET (2nd Edition)』の共著者でもあります。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。