ConvertFormula メソッド
数式で参照しているアドレスの相対参照と絶対参照の変換、セルの参照方法の A1 形式と R1C1 形式の変換、またはその両方の変換を行うには、ConvertFormula メソッドを使用します。
【書式】
object.ConvertFormula ( formula, fromreferencestyle [, toreferencestyle, toabsolute, relativeTo ] )
引数・戻り値
- object ・・・ 対象となる Application オブジェクトを指定します。
- formula ・・・ 変換対象の数式を指定します。数式の先頭には等号(=)を付けます。(省略不可)
- fromreferencestyle ・・・ 変換前の参照形式を XlReferenceStyle 列挙型 の定数またはその値を指定します。(省略不可)
定数 値 内容 xlA1 1 A1 形式の参照(既定値) xlR1C1 -4150 R1C1 形式の参照 - toreferencestyle ・・・ 変換する参照形式を XlReferenceStyle 列挙型 の定数またはその値を指定します。省略すると参照形式は変更されず、引数 fromreferencestyle で指定された形式が使用されます。
- toabsolute ・・・ 変換する参照の種類を XlReferenceType 列挙型 の定数またはその値を指定します。この引数を省略すると、参照の種類は変更されません。
定数 値 内容 xlAbsolute 1 行と列が絶対参照 xlAbsRowRelColumn 2 行が絶対参照で列が相対参照 xlRelative 3 行と列が相対参照 xlRelRowAbsColumn 4 行が相対参照で列が絶対参照 - relativeto ・・・ 1 つのセルを含む Range オブジェクトを指定します。このセルは、相対参照の基点となります。(省略可)
ConvertFormula メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Sample01_Convertformula() '「C4」セルの数式を取得 Dim myFormula As String myFormula = Range("C4").Formula '「C4」の数式を「R1C1 形式」で、「A1」セルを基点として「相対参照」 'で表示します。 MsgBox Application.ConvertFormula( _ Formula:=myFormula, _ fromreferencestyle:=xlA1, _ toreferencestyle:=xlR1C1, _ toabsolute:=xlRelative, _ relativeto:=[A1]) '[A1] は、Range("A1") でもOK End Sub |
実行結果
サンプルVBAソース実行前
実行後
ConvertFormula メソッド 使用例 2
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub Sample02_Convertformula() '選択範囲に含まれる数式内で参照しているアドレスの 'すべての絶対参照を相対参照に変換します。 Dim c As Range For Each c In Selection If c.HasFormula Then c = Application.ConvertFormula( _ Formula:=c.Formula, _ fromreferencestyle:=xlA1, _ toabsolute:=xlRelative, _ relativeto:=c) End If Next c End Sub |
実行結果
サンプルVBAソース実行前
実行後