Home » ExcelVBA Rangeオブジェクト » セル数式 » すべてのセル参照を絶対参照にするExcelマクロ

すべてのセル参照を絶対参照にするExcelマクロ

対象:Excel97, Excel2000, Excel2002, Excel2003

Excelを実務で利用している方の中に、絶対参照にする必要のないセル参照を、相対参照のままにしておく方と、絶対参照にしたがる方とが存在します。

絶対参照はセル参照を含む数式の入力されているセルをコピーをしたときに、参照先セルを変更したくないときに利用する参照方式ですから、セルのコピーをしないような場合、絶対参照にする必要はなく相対参照のままで問題ありません。

けれども、すべてのセル参照を絶対参照にしておきたいという方が、時々いらっしゃいます。

数式を入力したワークシートを作成後、相対参照・絶対参照を理解していない方に利用してもらう場合に、不用意にセルの移動やコピーをされることによってエラーが発生するのを極力回避したいというという気持ちなどから、セル参照をすべて絶対参照にしておきたいという要望となるようです。

数式入力中に参照方式を変更するには、[F4]キーを押せばいいわけですが、数式の入力済みの場合、数式バーやセル内にカーソルを置いてから[F4]キーを押さなければ、相対参照を絶対参照にすることはできません。

数式の入力されているセル範囲を選択しておいて[F4]キーを押しても相対参照は絶対参照にはなりません。

そのため
「すべての相対参照を絶対参照にするにはどうすればいいのでしょうか?」
というご質問をいただくことになります。

[スポンサードリンク]

選択範囲セルの数式を絶対参照にするサンプルマクロ

Excelの標準機能では、相対参照を一括して絶対参照にすることはできませんから、VBA(Visual Basic for Applications)でマクロを作成しましょう。

Sub 選択範囲のセルの数式を絶対参照にする()
 Dim rng As Range
 For Each rng In Selection
  If rng.HasFormula Then
   rng.Formula = Application.ConvertFormula( _
    Formula:=.Formula, _
    FromReferenceStyle:=xlA1, _
    ToAbsolute:=xlAbsolute)
  End If
 Next
End Sub

いずれかのセル範囲を選択しておいてから上記のマクロを実行すると、選択されていた範囲内の数式が絶対参照になります。

サンプルマクロの解説

Application.ConvertFormulaメソッドの引数・ToAbsoluteに定数xlAbsoluteを指定することで、絶対参照に変換することができます。

選択範囲内のセルをFor Each Nextループで順番に処理し、
 For Each rng In Selection

もし数式が含まれていたときに
  If rng.HasFormula Then

絶対参照に変換しています。
   rng.Formula = Application.ConvertFormula( _
    Formula:=.Formula, _
    FromReferenceStyle:=xlA1, _
    ToAbsolute:=xlAbsolute)

関連語句
一括絶対参照, 複数のセルをまとめて絶対参照に変換する

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » セル数式 » すべてのセル参照を絶対参照にするExcelマクロ

「セル数式」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.