Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » OffsetとResizeの動作を確認するExcelマクロ

OffsetとResizeの動作を確認するExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba offset resize 違い」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

RangeオブジェクトのOffsetプロパティと、

RangeのOffsetとResizeを確認するExcelマクロ

Resizeプロパティの、

RangeのOffsetとResizeを確認するExcelマクロ

違いについて調べている方による検索です。

この2つは、組み合わせて利用することもよくあるため、それぞれがどんなプロパティなのか、違いがわからなくなってしまったのかもしれません。

説明を読むよりも、引数を変更しながら簡単なマクロを何度か実行するほうが、理解は深まるはずです。

[スポンサードリンク]

Offsetプロパティを確認するサンプルマクロ

以下のマクロを実行すると、実行するたびに、アクティブセルが1つ下のセルに移動します。


Sub Offsetプロパティのサンプル()
 ActiveCell.Offset(1, 0).Select
End Sub

Range.Offsetプロパティは、元のRangeオブジェクト(上記マクロの場合アクティブセルを表すRangeオブジェクト)から、引数に指定された行・列だけシフトしたRangeオブジェクトを返します。

引数は、Excelマクロでよくお世話になるCellsプロパティの引数と同じく、第1引数が行・第2引数が列です。

ですから、上記のマクロのOffsetプロパティの引数を、
 ActiveCell.Offset(0, 1).Select
に変更して実行すると、実行するごとにアクティブセルが1つ右隣のセルに移動します。

Offsetプロパティの2つの引数をさまざまな整数に変更しながら上記マクロを何度か実行してみてください。

Resizeプロパティを確認するサンプルマクロ

以下のマクロを実行すると、どのようなセル範囲が選択されていたとしても、アクティブセルを左上のセルにした2行2列のセル範囲が選択されます。


Sub Resizeプロパティのサンプル()
 ActiveCell.Resize(2, 2).Select
End Sub

Resizeプロパティは、元のRangeオブジェクト(上記マクロの場合アクティブセルを表すRangeオブジェクト)を起点にして、引数に指定された行数・列数のセル範囲を表すRangeオブジェクトを返します。

引数は、Offsetプロパティの引数と同じく、第1引数が行・第2引数が列です。

Resizeプロパティの2つの引数をさまざまな自然数に変更して上記マクロを何度か実行してみてください。

OffsetプロパティとResizeプロパティの引数の違い

RangeオブジェクトのOffsetプロパティもResizeプロパティも引数を2つ指定できますが、指定できる値に決定的な違いがあります。

Offsetプロパティの場合は負の整数や「0」が指定されてもOKですが、Resizeプロパティの場合は負の整数や「0」が指定された場合は実行時エラーが発生します。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » OffsetとResizeの動作を確認するExcelマクロ

TrackBack:8

TrackBack URL
検索した隣のセルを取得するExcelマクロ from インストラクターのネタ帳
Range.Findメソッドで検索したセルの隣のセルを表すRangeオブジェクトを取得するExcel(エクセル)マクロを2つご紹介しています。
OFFSET関数を使って合計範囲を可変に from インストラクターのネタ帳
Excel(エクセル)で、OFFSET関数とSUM関数を組み合わせた数式にすると、合計する範囲を可変にすることができます。
VBAでアクティブセルの一つ下のセルにデータを入力する from インストラクターのネタ帳
アクティブセルの一つ下のセルに、データを入力するExcel(エクセル)マクロをご紹介しています。
Resizeプロパティで行全体を? from インストラクターのネタ帳
行全体を表すRangeオブジェクトを取得するなら、Range.ResizeプロパティよりもRange.EntireRowプロパティをおすすめします。
EntireRow・Offsetでアクティブセルの上や下に行を挿入する from インストラクターのネタ帳
EntireRow・Offsetプロパティを使って、アクティブセルの上や下に行を挿入するExcel VBAのコードをご紹介しています。
VBAで1つ下のセルを選択する-.Offset(1, 0).Select from インストラクターのネタ帳
1つ下のセルを選択するには、RangeオブジェクトのOffsetプロパティを使って、Rangeオブジェクトを取得するのが便利です。
VBAで一つ上の数式をコピーする from インストラクターのネタ帳
アクティブセルの一つ上のセルの数式を複製する2種類のコードをご紹介しています。
行数と列数でセル範囲を取得-Resizeプロパティ from インストラクターのネタ帳
行数と列数でセル範囲を取得するには、Range.Resizeプロパティを使うのがおすすめです。

Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » OffsetとResizeの動作を確認するExcelマクロ

「Offsetプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.