我发现了一个非常有趣的 窃听器 今天,如果它是一个 窃听器。
你能否确认一下你是否可以复制它?如果它是一个bug并且没有报告,那么我可以这样提交。 如果任何Excel-MVP想要将其作为错误提交,我也可以。
让我们说吧 sheet1
在细胞中 A1
,你有一个公式 = $B$2+ $B$3
。现在 确保 您的单元格已被选中。现在将此代码粘贴到模块中。
Sub Sample()
Dim r As Range, sPre As String, sAft As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
sPre = "$B$2": sAft = "$C$3"
On Error Resume Next
Set r = ws.Range("A1:A2").SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not r Is Nothing Then r.Replace what:=sPre, _
replacement:=sAft, _
lookat:=xlPart, _
MatchCase:=False
End Sub
理想情况下,代码应该有效 = $B$2+ $B$3
应该改为 = $C$3+ $B$3
在里面 公式栏 但它 不。 只有当您单步执行它或者如下一行所述时,它才会起作用
现在做一件事。选择除以外的任何单元格 A1
要么 A2
。现在,如果您运行代码,代码将按预期工作。
起初我以为我的excel已经疯了所以我关闭并重新启动它但是我能够重现上面的内容 Excel 2010
很多次。
然后我认为这是一个 .SpecialCells
问题,但也可以使用此代码观察到上述行为。
Sub Sample()
Dim r As Range, sPre As String, sAft As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
sPre = "$B$2": sAft = "$C$3"
Set r = ws.Range("A1:A2")
r.Replace what:=sPre, _
replacement:=sAft, _
lookat:=xlPart, _
MatchCase:=False
End Sub
你能复制它吗?