相対参照と絶対参照を変換する


前ページで書いたように、多くのユーザーは「A1参照形式とR1C1参照形式の変換」を行う機会は少ないと思います。それよりも、A1参照形式のままで「相対参照形式と絶対参照形式の変換」を行うケースが多いでしょう。そのときに指定するのが、4番目の引数ToAbsoluteです。しかし、ヘルプでは、そのToAbsoluteの解説が間違っています。

上はExcel 2003のヘルプで、下がExcel 2007のヘルプです。どちらも内容は同じです。おそらく、内容が合っているかどうかはチェックしていないのでしょうね。どちらのヘルプにも、次のように書かれています。

ToAbsolute
省略可能です。変換後の参照の種類を指定します。XlReferenceStyle クラスの定数を使用します。

XlReferenceStyleクラスの定数とは、前ページで書いた

定数 意味
xlA1 1 A1参照形式
xlR1C1 -4150 R1C1参照形式

です。どう考えても「相対参照形式と絶対参照形式の変換」を指定できません。参考までに、VBEのオブジェクトブラウザで定数を調べてみましょう。

引数ToAbsoluteに指定するのは、XlReferenceStyleクラスの定数ではありません。オブジェクトブラウザでXlReferenceStyleの下に見えているXlReferenceTypeクラスの定数です。

定数 意味
xlAbsolute 1 行列とも絶対参照 $A$1
xlAbsRowRelColumn 2 行だけ絶対参照 A$1
xlRelRowAbsColumn 3 列だけ絶対参照 $A1
xlRelative 4 行列とも相対参照 A1

したがって、相対参照のアドレスを絶対参照に変換するには、次のように考えられます。

ConvertFormula(Formula:=変換元の数式を指定します(必須), _
               FromReferenceStyle:=変換元の参照形式(A1/R1C1)を指定します(必須), _
               ToReferenceStyle:=参照形式(A1/R1C1)を変更しないので省略, _
               ToAbsolute:=XlReferenceTypeクラスの定数を指定します, _
               RelativeTo:=今回は省略)

それでも、うまくいかない件については >> 次ページ