Piszę makro w programie Excel2003, aby znaleźć wszystkie komórki z formułami w skoroszycie i wyświetlając ich adres i formułę w kilku kolumnach na innym arkuszu.Konwertowanie formuły komórki na tekst za pomocą programu excel vba
wiem, że mogę pokazać wzór dla pojedynczej komórki przy użyciu
Public Function ShowFormula(cell As Range) As String
ShowFormula = cell.Formula
End Function
który działa dobrze, ale ponieważ nie chciałem aby znaleźć wszystkie komórki ręcznie, napisałem następujące makro znaleźć je wszystkie dla mnie
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
Okazuje wszystkie komórki w porządku, ale zamiast wyświetlania formułę jako tekst, lista wyświetla wyniki formuły.
Czego brakuje mi do wyprowadzania formuł jako tekstu zamiast formuł?
Dzięki za cynk dla przyspieszenia rzeczy! Szybkie pytanie dotyczące twojej odpowiedzi. Podczas gdy to działa, wyprowadza ''= A1 + B2 + C3 + ...". Mam zamiar podłączyć te formuły z powrotem do różnych komórek później i będzie to wymagało usunięcia "" ". Czy istnieje sposób, aby to zrobić bez wymuszania formatu tekstowego? Naprawdę zastanawiam się, dlaczego działa z UDF, a nie w makro ...? –
Usunięcie "" "jest trywialne" Prawo (s, Len (s) - 1) ", ale rozumiem. Możesz spróbować ustawić format docelowej komórki na Tekst przed wklejeniem niezmodyfikowanej formuły i zobaczyć, jak to działa. –
Formatowanie do tekstu spowodowało tę sztuczkę. Tak prosty, a jednak nie przyszło mi to do głowy :(Wielkie dzięki! –