5
我在Excel2003中編寫了一個宏來查找工作簿中的所有帶有公式的單元格,並在不同的工作表的幾列中輸出其地址和公式。使用excel將單元格的公式轉換爲文本vba
我知道我可以顯示公式使用
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
它發現得很好,但所有的細胞,而不是顯示公式爲文本,列表顯示該公式的結果。
我錯過了什麼輸出公式作爲文本而不是公式?
謝謝你的提示超速的事情了!快速回答您的問題。在這種情況下,它輸出''= A1 + B2 + C3 + ...'。我打算在晚些時候將這些公式重新插入到不同的單元格中,這將需要刪除「'」。有沒有辦法做到這一點,而不強制文本格式?我真的很想知道爲什麼它可以和UDF一起使用,而不是在宏觀中...? –
刪除「'」並不重要,「Right(s,Len(s) - 1)',但我明白你的意思。在粘貼未修改的公式之前,您可以嘗試將目標單元格的格式設置爲文本,然後查看結果如何。 –
格式化爲文本做到了這一點。這麼簡單,但它並沒有發生在我身上:(非常感謝! –