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