VBAの勉強を始めてみた

タイトルの通りVBAの勉強を始めました。効率化と暇つぶしを兼ねています。VBA以外の話題もあるよ(笑)

数式を相対参照にする

今回は絶対参照になっている数式を相対参照にします。
数式内のセル参照を絶対参照⇔相対参照に変更するには・・・・・・数式内の変更したい部分にカーソルを合わせてF4キーを押せば、以下のように順番に切り替わっていきます。
 
行列とも絶対参照→行のみ絶対参照→列のみ絶対参照→行列とも相対参照(に戻る)

 

でも、変更したい数式が何十個、何百個とあったらこんなことを手動でいちいちやってられません。マクロで一括変更しちゃいましょう。

構文や、引数については過去記事を参照下さい。

 

以下はApplication.ConvertFormulaメソッドを使った簡単なプログラムです(選択範囲内の数式を行列とも相対参照にします)

 

***************************************

Sub 数式を行列とも相対参照にする()
    Dim myRange As Range

    For Each myRange In Selection.SpecialCells(xlCellTypeVisible)
        If myRange.Value <> "" Then   'セルの値が空白の場合は処理をしない
            myRange.Formula = Application.ConvertFormula(Formula:=myRange.Formula, _
            FromReferenceStyle:=xlA1, ToReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
        End If
    Next myRange
   
End Sub

***************************************
※SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存しやり直しのできる状態にしておいて下さい。標準モジュールにコードを貼り付けてマクロを使用する方法はこちら