ExcelマクロVBA入門
第56回.Rangeオブジェクト

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2018-01-24

第56回.Rangeオブジェクト


エクセルの根幹はセルです、つまりRangeオブジェクトになります、


この理解なくして、マクロは理解できません。

マクロVBAの上達の試金石として、Rangeオブジェクトの理解があると言っても過言ではありません。



以下は、Rangeオブジェクトを参照するためのプロパティです。

つまり、Rangeオブジェクトを参照するということは、

Rangeオブジェクトを返すプロパティを参照するということです。

Rangeオブジェクトを参照するためのプロパティ

オブジェクト プロパティ 説明
Worksheet Range セルまたはセル範囲を表す
Cells セルを表す
Rows 行を表す
Columns 列を表す
Range Range セルまたはセル範囲を表す
Cells セルを表す
Rows 行を表す
Columns 列を表す
EntireRow セル範囲を含む 1 行または複数の行全体
EntireColumn セル範囲を含む 1 列または複数の列全体
Offset オフセットの範囲
Resize サイズを変更
End 領域の終端のセル。Ctrl+方向キーに相当
SpecialCells 指定された条件を満たしているすべてのセル
MergeArea 結合セル範囲を表す
Next 次のセルを表す

Rangeオブジェクトに、Rangeプロパティがあるあたりが、

ちょっと理解しづらいかもしれません。



Worksheet.Range

これは、WorksheetのRangeプロパティであり、

そのRangeプロパティを通して、Rangeオブジェクトを参照しています。

そして、Rangeオブジェクトにも、Rangeプロパティがあり、

同じく、Rangeオブジェクトを参照できるのです。

ここは、少々難しいと感じるかもしれませんが、

Rangeプロパティを介してRangeオブジェクトを参照しているのだと、

そのまま受け入れて下さい。


また、Offset、Resize等、まだ説明していないプロパティについては、

今後少しづつ説明していきます。


データ型

Range

つまり、

Dim 変数 As Range

このように使います。

使用例

Dim MyRange As Range
Set MyRange = Worksheets(1).Range("B2:C10")
MyRange.Value = "文字列"

これは、

Worksheets(1).Range("B2:C10").Value = "文字列"

と同じことになります。

また、Rangeオブジェクトには、Cellsプロパティがあるので、


MyRange.Cells(2,2)は、C3セルになります。

つまり、Rangeオブジェクトの先頭位置が、Cells(1, 1)になります。

※Cells(1, 1)がB2セルになるので、そこから1つ下1つ右のセル



Cellsに引数を指定しない場合

Worksheets(1).Cells

このように、Cellsに引数を指定しない場合は、

WorksheetオブジェクトのCellsは、シートの全セルを指すことになります。

RangeオブジェクトのCellsは、そのRangeオブジェクト内の全セルを指しているのです。



VBEの自動メンバ表示

VBE(Visual Basic Editot)では、自動メンバ表示されます。

Range("A1").

と、「.」を打った時点で、メンバが自動表示されます。

しかし、

Cells(1, 1).

では表示されません。

このような場合は、

Cells.

と、引数の()を省略すると、メンバが自動表示されるようになります。



Rangeオブジェクトのプロパティとメソッド

とても多くのプロパティとメソッドが存在します。

上の表では、Rangeオブジェクトを返すプロパティのみ記載したわけですが、

全プロパティとメソッドについては、以下を参照して下さい。

Rangeオブジェクトのプロパティ一覧

Rangeオブジェクトのメソッド一覧

これらの一覧を全て覚える必要はないのですが、

一度くらいは、どんなプロパティがあるかだけでも、目を通しておくと良いでしょう。

最低限必要なプロパティ・メソッドは、このブログで、一度は説明いたします。



Rangeオブジェクトは、とても奥深く、難しいのです。

いきなり全てを理解することは困難です。

マクロを書くときは、常にRangeオブジェクトを意識して書くようにして下さい。

そうすることで、少しづつ理解が深まっていきます。


RangeとCellsの関連記事

第11回.RangeとCellsの使い方
VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトで、セルを指定するものです、どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のマクロVBA記述では、RangeとCell,Excelマクロの基礎と応用
RangeとCellsの深遠
RangeとCells特集にします。今さら・・・と、あなどるなかれ、結構奥が深いのです。ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
だまされるな!RangeとCellsの使い分け!
ネットを見ていると、Range("A"&i) と言う記述を良く見かけます。初心者の方が、マクロの自動記録を見て、記録されたマクロを自分で工夫して、行数を変数にしたというのなら素晴らしい事です。ExcelマクロVBAとエクセル関数についての私的雑感
Range以外の指定方法(Cells,Rows,Columns)
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。もっと、プログラムっぽい(笑)指定方法があります。Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
Rangeの使い方:最終行まで選択を例に





同じテーマ「マクロVBA入門」の記事

Workbookオブジェクト
Windowsオブジェクト
Worksheetオブジェクト
Rangeオブジェクト
Applicationのプロパティ
コレクションとは
コレクション処理(For Each)
エラー処理(On Error)
「On Error Go To」と「Exit Sub」
「On Error Resume Next」とErrオブジェクト
ブックを開く(Open)

新着記事NEW ・・・新着記事一覧を見る

クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)
Excelアドインの作成と登録について|VBA技術解説(2月3日)

アクセスランキング ・・・ ランキング一覧を見る

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • Rangeオブジェクト

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ