Хочу в VBA найти и заменить часть формулы в активной ячейке
С помощью автоматической записи макроса сгенерирован код, но при запуске выдает ошибку "Run-time error '91':" "Object variable or With block variable not set"
подскажите что не так?
Код
Sub Макрос()
' Найти и заменить част формулы в активной ячейке
Range("I7").Select
ActiveCell.Replace What:="Справочник!$AC:$AE;2;0", Replacement:= _
"Справочник!$AC:$AE;3;0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Find(What:="Справочник!$AC:$AE;3;0", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
End Sub
VBA по-другому видит формулу, чем пользователь, это можно посмотреть так: выделите ячейку с формулой и примените код:
Код
activecell.Formula
Вы увидите, что между параметрами функции не точка с запятой, а запятая. Поэтому нужно так:
Код
Sub Макрос()
' Найти и заменить част формулы в активной ячейке
Range("I7").Select
ActiveCell.Replace What:="Справочник!$AC:$AE,2,0", Replacement:= _
"Справочник!$AC:$AE,3,0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase _
:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Find(What:="Справочник!$AC:$AE,3,0", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
End Sub
Да, и Вы не заметили, что у Вас не произошло замены 2 на 3?