Добрый день!
На работе удаляют Excel (импортозамещение...). Сейчас ещё установлен 2013 офис, но когда снесут (а снесут очень скоро) будет возможность пользоваться 2007 офисом. И сейчас у меня есть файлы, которые имеют функции, которых нет в 2007 офисе.
Одна из самых нужных на данный момент - это функция ЛИСТ, она просто возвращает номер листа, в котором эта формула прописана.
Собственно, задача: надо сделать так, что бы в 2007 экселе работала функция ЛИСТ из старших офисов.
Сам я вижу решение этой задачи так: надо создать в экселе 2007 пользовательскую функцию ЛИСТ, по написанию такую же, как в старших версиях, проиндексировать (тут я могу в терминах путаться) её, чтобы 2007й эксель её воспринимал как свою обычную функцию.
Пока нашел следующее: получить номер листа можно таким кодом: ActiveCell.FormulaR1C1 = ActiveSheet.Index, соответственно я попробовал создать функцию с таким кодом:
Function SHEET(s)
s = ActiveSheet.Index
End Function
Но оно, естественно, не работает, да ещё и формула при написании выглядит как =PERSONAL.XLSB!SHEET(), а не =sheet(), как должна... может я изначально заблуждаюсь с направлением решения.
Так что прошу вашей помощи!
P.S. представленная выше задача - это минимум, если кто то знает как системно решить вопрос со всеми функциями работы в 2007 офисом с функциями старших - пишите, может задача не новая и есть какие нибудь готовые решения в виде расширений...
// вопрос гуглил, поиск по форуму также не сильно помог, вроде понимаю что вроде не сложно, но я в VBA совсем новичок
На работе удаляют Excel (импортозамещение...). Сейчас ещё установлен 2013 офис, но когда снесут (а снесут очень скоро) будет возможность пользоваться 2007 офисом. И сейчас у меня есть файлы, которые имеют функции, которых нет в 2007 офисе.
Одна из самых нужных на данный момент - это функция ЛИСТ, она просто возвращает номер листа, в котором эта формула прописана.
Собственно, задача: надо сделать так, что бы в 2007 экселе работала функция ЛИСТ из старших офисов.
Сам я вижу решение этой задачи так: надо создать в экселе 2007 пользовательскую функцию ЛИСТ, по написанию такую же, как в старших версиях, проиндексировать (тут я могу в терминах путаться) её, чтобы 2007й эксель её воспринимал как свою обычную функцию.
Пока нашел следующее: получить номер листа можно таким кодом: ActiveCell.FormulaR1C1 = ActiveSheet.Index, соответственно я попробовал создать функцию с таким кодом:
Function SHEET(s)
s = ActiveSheet.Index
End Function
Но оно, естественно, не работает, да ещё и формула при написании выглядит как =PERSONAL.XLSB!SHEET(), а не =sheet(), как должна... может я изначально заблуждаюсь с направлением решения.
Так что прошу вашей помощи!
P.S. представленная выше задача - это минимум, если кто то знает как системно решить вопрос со всеми функциями работы в 2007 офисом с функциями старших - пишите, может задача не новая и есть какие нибудь готовые решения в виде расширений...
// вопрос гуглил, поиск по форуму также не сильно помог, вроде понимаю что вроде не сложно, но я в VBA совсем новичок