Я пишу макрос в 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
Он отлично находит все ячейки, но вместо отображения формулы в виде текста в списке отображаются результаты формулы.
Что мне не хватает для вывода формул в виде текста, а не формул?