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 |
▼ページトップへ