Excel VBA 範囲オブジェクト
⚡ スマートサマリー
Excel VBA の Range オブジェクトは、ワークシート上の単一のセルまたはセルのグループを表します。このページでは、オブジェクトの階層構造、Range プロパティと Cells プロパティ、セルの選択と参照、値の読み取りと書き込み、および Offset プロパティについて説明します。

VBA 範囲とは何ですか?
VBA Range オブジェクトは、Excel ワークシート内の XNUMX つまたは複数のセルを表します。 Excel VBA の最も重要なオブジェクトです。 Excel VBA の範囲オブジェクトを使用すると、以下を参照できます。
- 単一細胞
- セルの行または列
- 細胞の選択
- 3D 範囲
前回のチュートリアルで説明したように、VBA は、 マクロしかし、VBAはシート上のどのデータを処理する必要があるかをどのように識別するのでしょうか?ここでVBAのレンジオブジェクトが役立ちます。
VBA でのオブジェクト参照の概要
Excel の VBA 範囲オブジェクトとオブジェクト修飾子を参照します。
- オブジェクト修飾子: オブジェクトを参照するために使用されます。 参照しているワークブックまたはワークシートを指定します。
これらのセル値を操作するには、 特性 (NAIST) と メソッド 使用されています。
- プロパティ: プロパティには、オブジェクトに関する情報が保存されます。
- 方法: メソッドは、それが実行するオブジェクトのアクションです。 Range オブジェクトは、選択、コピー、クリア、並べ替えなどのアクションを実行できます。
VBAでは、Excel内のオブジェクトを参照する際にオブジェクト階層パターンに従います。以下の構造に従ってください。ここで「.dot」は、各レベルのオブジェクトを接続する役割を果たします。
アプリケーション.ワークブック.ワークシート.範囲
その階層構造には2つの異なるプロパティを通してアクセスできますが、最もよく使用されるのはRangeプロパティです。
Rangeプロパティを使用してExcel VBA Rangeオブジェクトを参照する方法
Range プロパティは XNUMX つの異なるタイプのオブジェクトに適用できます。
- ワークシートオブジェクト
- 範囲オブジェクト
Range プロパティの構文
- キーワードは「レンジ」。
- キーワードに続く括弧
- 関連するセル範囲
- 引用 (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
Range オブジェクトを参照する場合、上に示したように、次のように参照されます。 完全修飾リファレンスExcelに対して、どの範囲、どのシート、どのワークシートにデータを入力するかを正確に指定しました。
例:: メッセージBox Worksheets(“Sheet1”).Range(“A1”).Value
Range プロパティを使用すると、次のような多くのタスクを実行できます。
- 範囲プロパティを使用した単一セルを参照してください。
- Worksheet.Range プロパティを使用して単一セルを参照する
- 行または列全体を参照する
- Worksheet.Range プロパティなどを使用して結合されたセルを参照する
そのため、範囲プロパティのすべてのシナリオをカバーするには長すぎます。 上記のシナリオについては、XNUMX つのみの例を示します。 「範囲プロパティを使用する単一セル」を参照してください。
Worksheet.Range プロパティを使用して単一セルを参照する
特定のセルを参照するには、そのセルのアドレスをテキスト文字列として Range プロパティに渡します。
構文は単純です 「範囲(「セル」)」。
ここでは、「.Select」コマンドを使用してシートから単一のセルを選択します。
ステップ1) この手順では、Excelを開きます。
ステップ2) このステップでは、
- ソフトウェアの制限をクリック
- 窓が開きます。
- ここにプログラム名を入力し、「OK」ボタンをクリックします。
- メインの Excel ファイルに移動します。トップメニューから「記録停止」ボタンをクリックしてマクロの記録を停止します。
ステップ3) 次のステップでは、
- マクロボタンをクリックします
トップメニューから。 下のウィンドウが開きます。
- このウィンドウで、「編集」ボタンをクリックします。
ステップ4) 上記の手順を実行すると、「Single Cell Range」という名前のファイルのVBAコードエディタが開きます。Excelシートから範囲「A1」を選択するには、以下のコードを入力してください。
Sub SingleCellRange() Range("A1").Select End Sub
ステップ5) ファイルを保存します 以下に示すようにプログラムを実行します。
ステップ6) プログラムを実行すると、セル「A1」が選択されていることがわかります。
同様に、特定の名前のセルを選択することもできます。たとえば、「Guru99- VBAチュートリアル」。以下のコマンドを実行する必要があります。これにより、その名前のセルが選択されます。
範囲("Guru99- VBAチュートリアル”).選択
他の範囲オブジェクトを適用するためのコードサンプルを次に示します。
| Excelでセルを選択する範囲 | 宣言された範囲 |
|---|---|
| 単一列の場合 | 範囲(「1:1」) |
| 単一カラムの場合 | 範囲(“A:A”) |
| 連続したセルの場合 | 範囲(「A1:C5」) |
| 隣接していないセルの場合 | 範囲(「A1:C5、F1:F5」) |
| XNUMX つの範囲の交差の場合 | 範囲(「A1:C5 F1:F5」) (交差セルの場合、コンマ演算子がないことに注意してください) |
| セルを結合するには | 範囲(「A1:C5」) (セルを結合するには「merge」コマンドを使用します) |
セルを選択するのは最初のステップにすぎません。実際には、マクロはセル内の値を読み取り、新しい値を書き戻します。
Rangeオブジェクトを使用して値を読み書きする方法
ワークシートを操作するマクロのほとんどは、次の2つのいずれかを実行します。セルから値を読み取るか、セルに値を書き込むかのどちらかです。どちらの場合も、Valueプロパティを介して処理が行われ、セルを事前に選択する必要はありません。
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
このパターンが信頼できる理由は4つあります。
- 選択は必須ではありません。 書き込み Range(“B3”).Value = 10 セルを先に選択するよりも、この方法の方が速くて安全です。記録されたマクロには .Select が多数含まれていますが、これはコードが必要としているからではなく、レコーダーがマウス操作をミラーリングしているためです。
- 値とテキストの比較: .Value は基となるデータを返し、.Text は画面に表示される書式設定された文字列を返します。この文字列は列幅に応じて切り詰められる場合があります。計算式では .Value を読み取ります。
- ブロック全体を1行に並べる: 複数セル範囲への割り当ては、すべてのセルを一度に埋めるため、ping.
- 正しいことをクリアする: ClearContentsは値のみを削除し、Clearは書式設定も削除し、Deleteはセルを削除して周囲のセルを移動します。
範囲指定では、セルを文字と数字で指定します。2つ目のプロパティでは、同じセルを2つの数字で指定します。
セルのプロパティ
範囲と同様に、 VBA 「セルプロパティ」を使用することもできます。唯一の違いは、スプレッドシート上のセルを参照するために使用する「アイテム」プロパティがあることです。セルプロパティは、プログラミングのループ処理で役立ちます。
たとえば、
Cells.item(Row, Column)。以下の2行はどちらもセルA1を参照しています。
- Cells.item(1,1) または
- Cells.item(1,”A”)
VBAにおける範囲とセルの違い
RangeとCellsは異なる経路で同じワークシートのセルにアクセスするため、適切な選択をすることでコードが短くなり、読みやすくなります。
| 相違点 | レンジ | 細胞 |
|---|---|---|
| アドレス形式 | テキスト文字列、Range(“A1”) | 2つの数値、Cells(1, 1) |
| 複数のセル | はい、範囲(“A1:C5”) | 一度に1つの細胞ずつ |
| ループ内 | 文字列連結が必要です | 行番号はループカウンタにすることができます |
| 読みやすさ | Excelに表示される住所と一致します | 27列目はAA列よりもイメージしにくい。 |
| 併用 | Range(Cells(1, 1), Cells(5, 3)) は、数値から A1:C5 を作成します。 | |
実用的なルールとしては、一目で読み取れる固定アドレスには Range を使用し、実行時に行番号や列番号を計算する場合は Cells を使用するのが良いでしょう。
範囲オフセット プロパティ
Range offset プロパティは、元の位置から離れた行/列を選択します。 宣言された範囲に基づいてセルが選択されます。 以下の例を参照してください。
たとえば、
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
この操作の結果、セルB2が移動します。オフセットプロパティにより、セルA1は1列1行離れた位置に移動します。RowOffset/ColumnOffsetの値は必要に応じて変更できます。負の値(-1)を使用すると、セルを後方に移動できます。
上記のコードを含む Excel をダウンロード
上記のExcelファイルをダウンロードしてください。 Code






