「vba offset resize 違い」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
RangeオブジェクトのOffsetプロパティと、
Resizeプロパティの、
違いについて調べている方による検索です。
この2つは、組み合わせて利用することもよくあるため、それぞれがどんなプロパティなのか、違いがわからなくなってしまったのかもしれません。
説明を読むよりも、引数を変更しながら簡単なマクロを何度か実行するほうが、理解は深まるはずです。
Offsetプロパティを確認するサンプルマクロ
まず、Range.Offsetプロパティを確認しましょう。
以下のマクロを実行すると、実行するたびに、アクティブセルが1つ下のセルに移動します。
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プロパティを確認するサンプルマクロ
つづいては、Range.Resizeプロパティの確認です。
以下のマクロを実行すると、どのようなセル範囲が選択されていたとしても、アクティブセルを左上のセルにした2行2列のセル範囲が選択されます。
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」が指定された場合は実行時エラーが発生します。
最終更新日時:2023-06-02 11:21
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » Excel VBAのOffsetとResizeの違い