よしみな ブログ

資格試験・就活・労働問題・資産運用について記事を上げていきます。

Offset マクロ(VBA)

今回はマクロ(VBA)にて「変数を用いてセル範囲指定を移動する際に便利なOffsetプロパティ」について解説します。

 

Offset(数値1, 数値2)

指定しているセル範囲から数値1行・数値2列分移動した位置にあるセル範囲を操作対象とするプロパティです。

 

具体例を挙げて解説します。

コード文を下記とします。

ActiveCell.Offset(1).Select

 

このコードはマクロを動かす前のセルの位置から一つ下の行を選択するVBAコードです。

f:id:yosi_mina:20200429153256p:plain

実行前

 

f:id:yosi_mina:20200429153446p:plain

実行後

 

となります。

 

行だけでなく列も移動させることが出来ます。

列のみを移動させます。

コード文は下記とします。

ActiveCell.Offset(, 1).select

 

上記とは違い、列のみを移動させます。

(結果表示は省略)

 

列を移動させて値を代入するときは次のようにします。

ActiveCell.Offset(, 1).Value = 14

 

このようにすると移動した列の値に「14」が入ります。

f:id:yosi_mina:20200429153256p:plain

実行前

f:id:yosi_mina:20200429153533p:plain

実行後

 このように右隣のセルに「14」が入力されます。

 

 

セル範囲の移動

コード文は下記とします。

Range("A1:C3").Offset(3, 1).Select

 

f:id:yosi_mina:20200429153616p:plain

移動前(マクロ内で操作対象にしています。)

 

この操作対象が移動して下記になります。

f:id:yosi_mina:20200429153717p:plain

実行後

セル範囲(今回は3×3のセル範囲)が移動していることがわかります。

 

 

余談

Offset(数値1, 数値2)

数値には負の値が入った場合も正常に動きます。

(行(数値1)の場合は上に、列(数値2)の場合は左に動きます。)

 

実際にやってみます。

コード文は下記とします。

ActiveCell.Offset(-3, -1).Select

f:id:yosi_mina:20200429154157p:plain

実行前

 

 

f:id:yosi_mina:20200429154620p:plain

実行後

 

 

このように移動します。

 

Offsetプロパティの解説は以上です。

 

今後はプロパティを組み合わせた使い方等も紹介していきますので、読者登録よろしくお願いいたします。

 

ここまで読んで頂き、ありがとうございました。