Microsoft Excel VBA - A1形式の参照と名前の使用

◆概要

このページは、ExcelのA1形式の参照と名前の使用について記載しています。


Rangeオブジェクトを取得するための最も一般的な方法の1つは、A1形式の参照、または範囲の名前を使う方法です。次の表は、A1形式の参照または範囲の名前を使ってRangeオブジェクトを操作する例の一覧です。

◆Rangeオブジェクトを操作する例

操作 コードの記述例
Sheet1のセルA1の値を設定する
Worksheets("Sheet1").Range("A1").Value=3
アクティブシートのセルB1に数式を設定する
Range("B1").Formura="=5-10*Rand()"
アクティブシートのセル範囲C1:E3内にある各セルの値を設定する
Range("C1:E3).Value=6
アクティブシートのセル範囲A1:E3の内容をクリアする
Range("A1","E3").ClearContents
"myRange"という名前(ブック レベルの名前)のセル範囲の文字を太字にする。
Range("myRange").Font.Bold=True
"yourRnage"という名前(シートレベルの名前)のセル範囲内にある各セルの値を設定する。
Range("Sheet!yourRange").Value=3
セル範囲を参照するオブジェクト変数を設定する。
Set objRange=Range("myRange")

Range("C1:E3").Value=6のような式では、Rangeプロパティがアクティブ シートを対象としていると見なされることに注意してください。このようなコードをグラフシートがアクティブになっているときに実行しようとすると、"Rangeメソッドは失敗しました"という実行時エラー(エラー番号1004)が発生します。


また、Rangeプロパティをほかのメソッドの引数の中で使うときに、Rangeプロパティの対象となるWorkSheetオブジェクトを指定しなかった場合にも、エラーが発生します。次の例は、Sheet1のセル範囲の並び替えを行うためのコードですが、実行時エラー1004が発生する場合があります。

Sub SortRange()
    Worksheets("Sheet1").Range("A1:B10").Sort _
        Key1:=Range("A1"), order1:=xlDescendingcending
End Sub

このエラーは、Sortメソッドが記述されている行には問題がないため、原因を発見するのが困難です。問題があるのは、引数 Key1が含まれている次の行です。このコードは、Sheet1がアクティブになっているときに正常に動作しますが、ほかのワークシートやモジュールから実行した場合は、エラーが発生します。このエラーを回避するには、次の例のように、引数 Key1の中でWorksheetプロパティを使います。

Sub SortRange()
    Worksheets("Sheet1").Range("A1:B10").Sort _
        Key1:=Worksheets("Sheet1").Range("A1"), order1:=xlDescendingcending
End Sub


▼ページトップへ