ゆるおたノート

Tomorrow is another day.

【VBA】セルに関数と番地を入力する書き方を整理してみた。

関数などの式をVBAでセルに直接入力したいとき。

いくつかオプションを指定することで、Rangeオブジェクトのアドレスに$が付いたり付かなかったり、表記の方法とかをコントロールします。

この区別がこんがらがっちゃうので、自分用にまとめ直してみました。

構文

Object.Address(RowAbsolute:=***, _
               ColumnAbsolute:=***, _
               ReferenceStyle:=***, _
               External:=***, _
               RelativeTo:=***)

RangeオブジェクトのAddressプロパティは、
セルやセル範囲のアドレスを文字列で返します。
指定した引数によって、得られるアドレスの形式が異なります。
すべての引数は省略可能です。

セルのアドレスを取得する(Addressプロパティ):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

使い分け

結果 目的 コード 意味
$A$1 セルの固定
ActiveCell.Address
行と列の絶対参照
$A1 列の固定
ActiveCell.Address (RowAbsolute:=False)
行のみ相対参照
A$1 行の固定
ActiveCell.Address (ColumnAbsolute:=False)
列のみ相対参照
A1 固定なし
ActiveCell.Address (RowAbsolute:=False,
                    ColumnAbsolute:=False)
行と列の相対参照
R1C1 固定なし
A1からの相対距離で指定
ActiveCell.Address (ReferenceStyle:=xlR1C1)
R1C1形式
[Book1] Sheet1! $A$1 シートとブックを含めた参照
ActiveCell.Address (External:=True)
外部参照形式
R[-4]C[-1] セルの距離で指定
ActiveCell.Address (ColumnAbsolute:=False,
                    RowAbsolute:=False,
                    ReferenceStyle:=xlR1C1,
                    RelativeTo:=Cells(5, 2))
B5からの相対参照

いつもPCのことばっかりなので、近いうちに音楽の話もしたいです。
できるかな。

参考

セルのアドレスを取得する(Addressプロパティ):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug