ExcelでD列の式を値に切替・復活するVBAマクロとB1のステータス管理

Visual Basic

Excelで特定の列に入力された式をボタン操作で値に切替えたり復活させたりする方法について解説します。特にD列のSUM関数を対象とした操作や、B1セルでのモード表示の設定例を紹介します。

VBAマクロでD列の式を値複写・復活する方法

まず、D3からD7の範囲を対象に式を値に置き換えたり、復活させたりするVBAマクロを作成します。マクロはトグルボタンで呼び出す形が便利です。

以下のコード例では、元の式を配列に保持し、ボタン操作で値複写と式復活を切替えます。

Dim FormulaBackup() As Variant
Sub ToggleFormulas()
    Dim rng As Range
    Set rng = Range("D3:D7")
    Static mode As Boolean ' False=計算式モード, True=値複写モード

    If Not mode Then
        ' 計算式を値に複写
        ReDim FormulaBackup(1 To rng.Count)
        Dim i As Integer
        For i = 1 To rng.Count
            FormulaBackup(i) = rng.Cells(i).Formula
            rng.Cells(i).Value = rng.Cells(i).Value
        Next i
        Range("B1").Value = "値複写モード"
        mode = True
    Else
        ' 値から式を復活
        For i = 1 To rng.Count
            rng.Cells(i).Formula = FormulaBackup(i)
        Next i
        Range("B1").Value = "計算式モード"
        mode = False
    End If
End Sub

B1セルのモード判定をより簡潔にする方法

従来の式 =IF(ISERROR(FIND(“=”,FORMULATEXT(D3)))=FALSE,”計算式モード”,”値複写モード”) は少し冗長です。

より簡潔には =IF(ISFORMULA(D3),”計算式モード”,”値複写モード”) を使うと、D3が式かどうかを直接判定できます。Excel 2013以降で使用可能です。

実例で理解するマクロの動作

例えば、D3=SUM(E3:G3), D4=SUM(E4:G4) と入力されている場合、マクロ実行で一度値に置き換えると、セルには計算結果のみが残ります。

再度ボタンを押すと、保存していた元の式が復活し、B1の表示も「計算式モード」に戻ります。

複数列や範囲に応用する場合

同様の方法で、D列以外や複数列の範囲に対しても適用可能です。rngを変更するだけで簡単に応用できます。

注意点として、マクロを閉じたりExcelを再起動するとStatic変数はリセットされますので、長期保存する場合はワークシートの隠し列に式を保持する方法もあります。

まとめ

Excelでの値複写・式復活はVBAマクロで効率的に管理できます。B1セルの表示も ISFORMULA 関数を使うことで簡潔に判定可能です。

この方法を使えば、D列の計算式と値を簡単に切替えられ、作業効率が大幅に向上します。

コメント

タイトルとURLをコピーしました