前ページで書いたように、多くのユーザーは「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:=今回は省略)