Макрос Excel, написанный в версии 2010, не работает в 2013 году
Мне было поручено проверить, что макросы, которые работают в Excel 2010, все еще работают в 2013 году. Моя первая проблема заключается в том, что создатель оригинального макроса написал весь код на вкладке рабочего листа, назначил код диапазону имен, а затем вызвал диапазон имен как макрос!!! Как долго мой мозг обрабатывал... есть ли какая-то польза от этого подхода? Макрос изначально был написан в 1998 году. Отладка - это ОБЩАЯ БОЛЬНОСТЬ без контроллера VB:(
Во всяком случае, это код, который отказывается работать в версии 2013, но прекрасно работает в 2010 году:
Named Range: Weekly Transfer(w)
=ACTIVATE("p&l")
=SELECT(!$A$2)
=ALERT("Macro to transfer weekly result onto year's sheet. Is current week number in Cell A2? CANCEL to stop!",1)
=IF(A7=FALSE,GOTO($A$1))
=ACTIVATE("yr hist")
=SELECT("R2c7:c72")
=FORMULA.FIND(!$A$2,1,2,1,1,FALSE)
=SELECT("R[1]c")
=ACTIVATE("p&l")
=SELECT("R2c6:c10")
=FORMULA.FIND(!$A$2,1,2,1,1,FALSE)
=SELECT("r3:r290c")
=COPY()
=ACTIVATE("yr hist")
=PASTE.SPECIAL(3,1,FALSE,FALSE)
=SELECT("r4c")
=CLEAR()
=ACTIVATE("p&l")
=SELECT(!$A$2)
=RETURN()
Проблема возникает на 2-й =FORMULA.FIND
Команда выдает эту ошибку:
Мы не смогли найти то, что вы искали. Нажмите Опции, чтобы найти больше способов поиска.
Ошибка возникает в 2013 году, но не в 2010 году.
Я не могу понять, почему разные версии Excel по-разному обрабатывают этот код. Я проверил, а затем снова проверил, чтобы быть уверенным в том, о чем я говорю.
Пожалуйста, обратите внимание: чтобы иметь смысл кода выше, вы должны знать, что ячейка $A$1
содержит =RETURN()