我正在 Excel2003 中编写一个宏,以在工作簿中查找所有带有公式的单元格,并将它们的地址和公式输出到不同工作表的几列中。
我知道我可以使用显示单个单元格的公式
Public Function ShowFormula(cell As Range) As String
ShowFormula = cell.Formula
End Function
效果很好,但是由于我不想手动查找所有单元格,因此我编写了以下宏来为我找到所有单元格
Sub Macro2()
Dim i As Integer
Dim targetCells As Range
Dim cell As Range
Dim referenceRange As Range
Dim thisSheet As Worksheet
Set referenceRange = ActiveSheet.Range("CA1")
With referenceRange
For Each thisSheet In ThisWorkbook.Sheets
If thisSheet.Index >= referenceRange.Parent.Index Then
Set targetCells = thisSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
For Each cell In targetCells
If cell.HasFormula Then
.Offset(i, 0).Value = thisSheet.Name
.Offset(i, 1).Value = cell.Address
.Offset(i, 2).Value = CStr(cell.Formula)
i = i + 1
End If
Next
End If
Next
End With
End Sub
它可以很好地找到所有单元格,但列表不会将公式显示为文本,而是显示公式结果。
将公式输出为文本而不是公式,我缺少什么?