Макрос 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()

0 ответов

Другие вопросы по тегам