Excel VBA Offsetプロパティ とResizeプロパティを使いこなそう

スポンサーリンク
スポンサーリンク

Offset【オフセット】プロパティ

指定したセル範囲から指定した行数と列数分だけ移動したセル範囲を参照するには、Range【レンジ】オブジェクトのOffset【オフセット】プロパティを使用します。

Offset【オフセット】プロパティの書式

[]内は省略可能です。
オブジェクト.Offset([移動する行数][,移動する列数])


設定値(引数)の説明

  • オブジェクト(必須)
    最初のセル範囲をRange【レンジ】オブジェクトで指定します。
  • 移動する行数(省略可)
    行方向の移動数を指定します。正の数は下方向、負の数は上方向に移動します。省略した場合は、移動無しの「0」が設定されます。
  • 移動する列数(省略可)
    列方向の移動数を指定します。正の数は右方向、負の数は左方向に移動します。省略した場合は、移動無しの「0」が設定されます。

※指定したセルがワークシートの上端、下端、右端、左端にある場合で、移動できない方向を指定した場合はエラーになります。

選択セルの行列位置を変更する例

  • Range(“B2”).Offset(1,0).select【B3セルに移動】
  • Range(“B2”).Offset(0,1).select【C2セルに移動】
  • Range(“B2”).Offset(1,1).select【C3セルに移動】
  • Range(“B2”).Offset(-1,0).select【B1セルに移動】
  • Range(“B2”).Offset(0,-1).select【A2セルに移動】
  • Range(“B2”).Offset(-1,-1).select【A1セルに移動】

※Range【レンジ】オブジェクトのSelect【セレクト】メソッドで選択したり、Value【バリュー】プロパティでセルに値の設定や取得をしないとエラーになります。

選択セル範囲の行位置を変更する例

列方向の移動がないとき(0)は、記述を省略できます。

基準位置Range(“B2:C3”)の選択範囲


Range(“B2:C3”).Offset(1)の選択範囲


Range(“B2:C3”).Offset(-1)の選択範囲


選択セル範囲の列位置を変更する例

行方向の移動がないとき(0)は、記述を省略でき(,)カンマだけ記述します。

Range(“B2:C3”).Offset(,1)の選択範囲


Range(“B2:C3”).Offset(,-1)の選択範囲

Resize【リサイズ】プロパティ

選択セル範囲の位置を変更するのがOffset【オフセット】プロパティでした。いっぽう、選択セルの範囲のサイズを変更するには、Range【レンジ】オブジェクトのResize【リサイズ】プロパティを使用します。

Resize【リサイズ】プロパティの書式

[]内は省略可能です。
オブジェクト.Resize([RowSize][,ColumnSize])


設定値(引数)の説明

  • オブジェクト(必須)
    サイズ変更するセル範囲をRange【レンジ】オブジェクトで指定します。
  • RowSize【ロウサイズ】(省略可)
    新しい範囲の行数を指定します。省略した場合は、変更する前の行数になります。
  • ColumnSize【カラムサイズ】(省略可)
    新しい範囲の列数を指定します。省略した場合は、変更する前の列数になります。

※Resize【リサイズ】プロパティは、現在参照している範囲の左端のセルを基準として、参照する行数と列数を変更します。


Offsetは引数が(移動行数,移動列数)でしたが、Resizeは引数が(行サイズ,列サイズ)の違いがあります。現在のセル範囲のサイズに対してブラスまたは、マイナスします。

現在の選択範囲の行数を取得するにはSelection.Rows.Count(ローズカウント)、現在の選択範囲の列数を取得するにはSelection.Columns.Count(カラムズカウント)で取得し、その値に対して範囲を拡大、縮小します。

OffsetプロパティとResizeプロパティの併用

1つのステートメントの中でOffsetプロパティとResizeプロパティを連続して使うことができます。


表範囲をCurrentrejion【カレントリジョン】プロパティで参照して、表1行目の項目行と最終行の合計行を選択範囲外にしたい場合、Offset(1)として選択範囲を1段下げて選択範囲の最終列が表範囲から1段下にずれるので、そのずれた範囲をResize(selection.Rows.Count -2)で行サイズを2段縮小してデータ範囲だけを選択するテクニックは良く使われます。

表のデータ部分だけを選択するコード

Sub リサイズ()
Range("A1").CurrentRegion.Select
Selection.Offset(1).Resize(Selection.Rows.Count - 2).Select
End Sub

実行結果

以上で、Offset【オフセット】プロパティ とResize【リサイズ】プロパティについての解説を終了します。ありがとうございました。

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク