我试图将公式中的“=”更改为“'=”(基本上试图将公式保留为文本),但它不起作用。
Set rng = Range("A1:A500")
rng.Replace "=", "'=", xlPart
但由于某种原因,它不起作用。
答案 0 :(得分:2)
我测试了你的代码,它对我有用。如果你想尝试一个非常相似的VBA方法,你可以尝试这个......
Sub test()
For Each R In Range("A1:A5")
R.Value2 = "'" & R.Formula
Next
End Sub
此外,我不确定您为什么尝试将公式视为文本的上下文,但如果只是查看公式,则可以使用“公式”选项卡下的“显示公式”选项。
我做了一些性能测试,看看哪个更快......直接替换的for循环与原始的Range.Replace方法相比。在10μs/单元时,Range.Replace很容易击败for循环,然后以大约80μs/单元的速度进行,然而!这并不是所有的说法。 for循环很慢,因为VBA在循环遍历单元格时很慢。从理论上讲,当涉及到实际操作时,直接替换应始终优先于替换算法。所以,我修改了for循环来代替一个数组,它实际上加速了大约2μs/ cell。最重要的是,如果你有性能问题,这样的事情是最快的......
Sub test()
Set R = Range("A1:A5000")
Dim A() As Variant
A = R.Formula
For i = 1 To UBound(A)
A(i, 1) = "'" & A(i, 1)
Next
R.Value2 = A
End Sub
答案 1 :(得分:1)
您需要替换()功能,而不是 .Replace 方法:
Sub dural()
Dim Rng As Range, r As Range
Set Rng = Range("A1:A500").Cells.SpecialCells(xlCellTypeFormulas)
For Each r In Rng
r.Value = Replace(r.Formula, "=", "'=")
Next r
End Sub