マクロを記録すると、基本的に絶対参照で行動が記録されますが、「相対参照で記録」オプションをONにすることで、元いたセルからどっちにどれだけというベクトル的な記録をすることが可能になります。
絶対参照(普通のマクロの記録)の場合
この記事は、マクロとは何かがわかっていること、マクロの記録方法を知っていることが前提となります。

まずは普通に開発タブなどからマクロの記録を行います。

記録するマクロに名前をつけてOKを押します。

今回はもともとA1セルを選んだ状態から、B2セルをクリックしてアクティブセルを変更しただけで記録終了しました。

記録したVBAを確認すると、Range(“B2”).Selectという処理が実行されています。B2セルを選択という意味になります。

B2を選択ということは、今いる位置に関係なく、このマクロを実行すれば、

B2セルに移動することになります。これが絶対参照です。
相対参照で記録の使い方

今度は相対参照で記録オプションをONにして、マクロの記録を行ってみます。
オプションをONにするには、開発タブであればマクロの記録の下、
オプションをONにするには、開発タブであればマクロの記録の下、

表示タブであればマクロ→マクロの記録の下の相対参照で記録をクリックします。

相対参照で記録の色が変わった(ONになった)状態で、もう一度A1セルを選択しておき、マクロの記録を開始します。

再度B2セルをクリックしてアクティブセルを変更し、記録を終了します。

同じ行動に対して、今度はActiveCell.Offset(1, 1).Range(“A1”).Selectという処理が記録されています。
ActiveCellは今いるセル、Offset(1,1)はその一行下、一列右という意味になります。
その後ろのRange(“A1”)は参照した先のセルをA1とする、みたいな意味なんですが、とりあえず気にしないでください。
ActiveCellは今いるセル、Offset(1,1)はその一行下、一列右という意味になります。
その後ろのRange(“A1”)は参照した先のセルをA1とする、みたいな意味なんですが、とりあえず気にしないでください。

このコードは絶対参照とちがい、今いるセルを基準にひとつ下、ひとつ右のセルを選択するコードとなります。
なので開始位置がちがう状態でマクロを実行すれば、
なので開始位置がちがう状態でマクロを実行すれば、

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

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