機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA

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



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





このエントリーをはてなブックマークに追加