Создать макрос в Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Vaseninbox
Сообщения: 34
Зарегистрирован: 05 сен 2008, 15:11
Контактная информация:

Здравствуйте!
Как можно сделать так,чтобы макрос выполнялся из определённой ячейки на листе, аналогично тому, как обычно вводится и выполняется функция, например,

Код: Выделить всё

=СУММ(A1;A50)
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

В стандартный модуль VBA помещаете функцию, которая возвращает значение
И пишете формулу с этой функцией.

Пример можно найти здесь: http://excelvba.ru/code/CurrencyRate
Почитать о UDF можно здесь:
http://www.compute-rs.com/ru/sovet-2591772.htm
http://www.planetaexcel.ru/tip.php?aid=122
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Vaseninbox
Сообщения: 34
Зарегистрирован: 05 сен 2008, 15:11
Контактная информация:

Понятно.Спасибо!
А как сделать так, чтобы в эту функцию передавался диапазон ячеек в качестве аргумента?? Например, во встроенную функцию "=СУММ(A1:A1000)" передаётся аргумент, и пользователь выбирает сам нужный ему диапазон ячеек, а функция уже выплняет какие-то действия над этим диапазоном...
Аналогично и здесь: пользователь должен выбрать диапазон, а пользовательская функция проделает над ним некоторые действия...
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Вот пример пользовательской функции, эмулирующей (а на самом деле использующей) втроенную функцию "СУММ":

Код: Выделить всё

Function SUMRANG(SumRange As Range) As Single
    SUMRANG = Application.WorksheetFunction.Sum(SumRange)
End Function
Аналогично вводите: "=SUMRANG(A1:A1000)" и получаете сумму нужного диапазона.
На этом примере, думаю, разберётесь, как создавать более сложные функции с аргументами пользователя.
Ответить