ゆるおたノート

Tomorrow is another day.

【VBA】セルに関数と番地を入力するときの話。

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

Rangeオブジェクトにいくつかオプションを指定して、$が付いたり付かなかったり(絶対参照と相対参照)とかをコントロールします。

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

参照

どこまでを引用と呼ぶべきかアレなので、もしかしたらダメなヤツかもしれませんが、、、(すぐ消すかも…)

www.moug.net

構文

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

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

使い分け

結果 目的 コード 意味
$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のことばっかりなので、近いうちに音楽の話もしたいです。
できるかな。