このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Rangeオブジェクトのセル範囲を変更する方法

2021年11月26日

「Rangeオブジェクトを制すものはエクセルVBAを制す」
エクセルにおけるVBAはこういっても過言ではありません。

  1. シートからの情報を正確に取得する
  2. シート上に正確にアウトプットする

この2つはRangeオブジェクトを正しく使えないとうまくいきません。

そこで、今回はRangeオブジェクトを操る次の6つのプロパティを紹介したいと思います。

  1. Resize
  2. offset
  3. CurrentRegion
  4. Rows
  5. Columns
  6. MergeArea

Rangeオブジェクトのプロパティは99個ありますが、セル範囲を操るプロパティは主にこの6つです。

この6つをマスターして、Rangeオブジェクトのプロフェッショナルになりましょう。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

1.Resizeプロパティ

RangeObj.Resize(x,y)

1つ目はResizeプロパティです。このプロパティはセルの範囲を変更(拡大/縮小)する事ができます。

Range(“A1").Resize(4,4)とすると、A1のセルから行方向に4つ、列方向に4つ拡大して、黄色セルの範囲を取得することができます。

引数を省略すると、その方向へはサイズ変更がされません。

  • ReSize(4):行方向に4つ(列方向はそのまま)
  • Resize(,4):列方向に4つ(行方向はそのまま)

2.Offsetプロパティ

RangeObj.Offset(x,y)

2つ目はOffsetプロパティです。このプロパティはセルの位置を移動させる事ができます。

Range(“A1").Offset(3,3)とすると、A1のセルから行方向に3つ、列方向に3つ移動して、黄色セルを取得することができます。

引数を省略すると、その方向へは移動しません。

  • Offset(3):行方向に3つ(列方向はそのまま)
  • Offset(,3):列方向に3つ(行方向はそのまま)

3.CurrentRegionプロパティ

RangeObj.CurrentRegion

3つ目はCurrentRegionプロパティです。このプロパティは範囲を自動的に拡大してくれます。

上の図のようにデータが集まったシートで、
Range(“A1").CurrentRegionとするとデータのある範囲(黄色セルの範囲)を取得することができます。

データを入力したシートで、データの範囲を一括取得したい時などに活躍します。

ただし、データ内で空行が含まれると、その行よりも下が範囲外となるので注意してください。

4-5.Rows(Columns)プロパティ

RangeObj.Rows(y)
RangeObj.Columns(x)

4,5つ目はRows(Columns)プロパティです。このプロパティは範囲内の行(列)を取得できます。

Rows(1)といったように1行目全体を取得するために使った事があるかもしれません。
これはActiveSheet.Rows(1)の省略系で、シート上の1行目を取得しています。
RangeObj.Rows(1)とした場合は、RangeObj内の1行目を取得することができます。

Range(“A1:D4").Rows(1)とすると、Range(“A1:D4")内の1行目であるRange(“A1:D1")が取得されます。
Range(“A1:D4").Columns(1)とすると、Range(“A1:D4")内の1列目であるRange(“A1:A4")が取得されます。

6.MergeAreaプロパティ

RangeObj.MergeArea

6つ目はMergeAreaプロパティです。このプロパティは結合セルの範囲を取得する事ができます。

上の図ではRange(“A1:D1")の範囲が結合されています。
この状態でRange(”A1”).MergeAreaとするとこの結合範囲を取得する事ができます。

終わりに

今回はRangeプロパティの中のセル範囲を操るものに焦点を当てて紹介しました。

Rangeプロパティでは主にこの6つですが、Rangeメソッドまで手を広げると、UnionメソッドやIntersectメソッドなどもあります。

メソッドについてもいずれ紹介したいと思いますので、お待ちください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/11/27 09:07:42時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから