A small modification makes the result dynamic and units can be added.
Sub ConvertFormulaToText()
Dim intRow As Integer
Dim intCol As Integer
Dim intCountRow As Integer
Dim strFormula As String
Dim myRange As Range
Dim strVal As String
Dim strText As String
Dim strAdd As String
Dim strFormat As String
If Selection.Columns.Count > 1 Then
MsgBox "Too many columns selected"
Exit Sub
End If
intCol = Selection.Column
intRow = Selection.Row
strFormat = "0.00"
For intCountRow = 1 To Selection.Rows.Count
Cells(intRow + intCountRow - 1, intCol).Select
strFormula = ActiveCell.Formula
strAdd = ActiveCell.Address(False, False)
If Len(strFormula) = 0 Then GoTo MissRow
For Each myRange In ActiveCell.Precedents.Cells
With myRange
strVal = " " & Range(.Address).Address & " "
strText = Chr(34) & " & Text(" & strVal & "," & Chr(34) & strFormat & Chr(34) & ") &" & Chr(34)
strFormula = Replace(strFormula, .Address, strText)
strFormula = Replace(strFormula, .Address(RowAbsolute:=False), strText)
strFormula = Replace(strFormula, .Address(ColumnAbsolute:=False), strText)
strFormula = Replace(strFormula, .Address(RowAbsolute:=False, ColumnAbsolute:=False), strText)
End With
Next
strFormula = Chr(34) & strFormula & Chr(34)
'Add the result
strFormula = strFormula & " & " & Chr(34) & "=" & Chr(34) & " & " & "TEXT(" & strAdd & "," & Chr(34) & strFormat & Chr(34) & ")"
'Add units
If Len(ActiveCell.Offset(0, 1).Value) Then strFormula = strFormula & " & " & Chr(34) & " " & ActiveCell.Offset(0, 1).Value & Chr(34)
'Add some spaces to improve readability
strFormula = Replace(strFormula, "=", " = ")
strFormula = Replace(strFormula, "+", " + ")
strFormula = Replace(strFormula, "-", " - ")
'Add =
ActiveCell.Offset(0, 2).Formula = "=" & strFormula
MissRow:
Next intCountRow
End Sub