ExcelVBA(マクロ)で絶対参照ではなく、アクティブセル基準で記録する方法/相対参照で記録の使い方

IT

マクロを記録すると、基本的に絶対参照で行動が記録されますが、「相対参照で記録」オプションをONにすることで、元いたセルからどっちにどれだけというベクトル的な記録をすることが可能になります。

スポンサーリンク

絶対参照(普通のマクロの記録)の場合

sotai1
まずは普通に開発タブなどからマクロの記録を行います。
sotai2
記録するマクロに名前をつけてOKを押します。
sotai3
今回はもともとA1セルを選んだ状態から、B2セルをクリックしてアクティブセルを変更しただけで記録終了しました。
sotai4
記録したVBAを確認すると、Range(“B2”).Selectという処理が実行されています。B2セルを選択という意味になります。
sotai5
B2を選択ということは、今いる位置に関係なく、このマクロを実行すれば、
sotai6
B2セルに移動することになります。これが絶対参照です。

相対参照で記録の使い方

sotai7
今度は相対参照で記録オプションをONにして、マクロの記録を行ってみます。
オプションをONにするには、開発タブであればマクロの記録の下、
sotai8
表示タブであればマクロ→マクロの記録の下の相対参照で記録をクリックします。
sotai9
相対参照で記録の色が変わった(ONになった)状態で、もう一度A1セルを選択しておき、マクロの記録を開始します。
sotai10
再度B2セルをクリックしてアクティブセルを変更し、記録を終了します。
sotai11
同じ行動に対して、今度はActiveCell.Offset(1, 1).Range(“A1”).Selectという処理が記録されています。
ActiveCellは今いるセル、Offset(1,1)はその一行下、一列右という意味になります。
その後ろのRange(“A1”)は参照した先のセルをA1とする、みたいな意味なんですが、とりあえず気にしないでください。
sotai12
このコードは絶対参照とちがい、今いるセルを基準にひとつ下、ひとつ右のセルを選択するコードとなります。
なので開始位置がちがう状態でマクロを実行すれば、
sotai13
こういった結果となります。これが相対参照となります。

なお、相対参照で記録オプションは記録中にもON/OFFが可能で、ひとつのマクロ内で使い分けることができます。
また、オプションのON/OFFはマクロ内に記録されません。

やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

コメント