Excel2003. Адрес ячейки с которой вызывается функция и т.д

Программирование на Visual Basic for Applications
Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Excel2003. Адрес ячейки с которой вызывается функция и т.д

Сообщение Scorry_1 » 25.06.2008 (Ср) 12:51

Добрый день. Возможно вопрос уже обсуждался, но т.к. не знаю в какую сторону копать - создать грамотный запрос тоже не могу.

Возможно ли узнать из функции какая ячейка excel ее вызвала? Если да, то как. И второе - в ячейке формула "=сумм(xx:yy)" как находясь в функции забрать область (xx:yy) чтобы работать с ней?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.06.2008 (Ср) 13:05

Вообще-то функции листа не могут менять содержимое ячейки, из которой вызваны. Да и некорректно это.
Лучше не делай так, а измени алгоритм. Функция должна только возвращать результат, ничего больше, а все необходимые данные передаются ей в виде аргументов.
Lasciate ogni speranza, voi ch'entrate.

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 25.06.2008 (Ср) 17:32

Да мне менять и не нужно - хватило бы возможности изменять значение возвращаемым значением.
А что на счет второго вопроса? Если возможно выдрать область суммирования из формулы, то это тоже сильно облегчило бы жизнь.
Сейчас у меня так: в функцию передается значение ячейки с суммой области, также передается область сдвинутая от области суммирования на 1 столбец, т.о. при заполнении строки ниже суммируемых приходится дважды изменять область, первый раз изменять область суммирования, второй - область передаваемую в функцию. Хотелось бы этого как-то избежать... (надеюсь, что не слишком сумбурно написал)

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.06.2008 (Чт) 16:32

Scorry_1 писал(а):Да мне менять и не нужно - хватило бы возможности изменять значение возвращаемым значением.
А что на счет второго вопроса? Если возможно выдрать область суммирования из формулы, то это тоже сильно облегчило бы жизнь.
Сейчас у меня так: в функцию передается значение ячейки с суммой области, также передается область сдвинутая от области суммирования на 1 столбец, т.о. при заполнении строки ниже суммируемых приходится дважды изменять область, первый раз изменять область суммирования, второй - область передаваемую в функцию. Хотелось бы этого как-то избежать... (надеюсь, что не слишком сумбурно написал)


Если функция не встроенная, а создана пользователем в VBA, то:

1) узнать из функции какая ячейка excel ее вызвала
Application.Caller возвратит объект Range (см. Справку)

2) в ячейке формула "=сумм(xx:yy)" как находясь в функции забрать область (xx:yy) чтобы работать с ней...
Свойство Range("A1").Precedents возвратит объект Range состоящий из ячеек использованных в формуле заданного диапазона
Привет,
KL

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 27.06.2008 (Пт) 4:36

KL, большое спасибо! :)


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList