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