Как я могу вернуть результаты функции в ячейку в Excel? - PullRequest
3 голосов
/ 18 февраля 2009

Предположим, у меня есть функция, прикрепленная к одному из моих листов Excel:

Public Function foo(bar As Integer) as integer
    foo = 42
End Function

Как я могу получить результаты foo, возвращенные в ячейку на моем листе? Я пробовал "=foo(10)", но все, что он мне дает, это "#NAME?"

Я также пробовал =[filename]!foo(10) and [sheetname]!foo(10) без изменений.

Ответы [ 4 ]

5 голосов
/ 18 февраля 2009

Попробуйте следовать указаниям здесь , чтобы убедиться, что вы все делаете правильно, особенно о том, где его разместить. (Insert->Module)

Я могу подтвердить, что открываем редактор VBA, используя Insert->Module и следующий код:

Function TimesTwo(Value As Integer)
    TimesTwo = Value * 2
End Function

и на листе, помещающем "=TimesTwo(100)" в клетку, я получаю 200.

3 голосов
/ 18 февраля 2009

Поместите функцию в новый отдельный модуль (Insert-> Module), затем используйте = foo (10) в формуле ячейки, чтобы вызвать ее.

1 голос
/ 18 февраля 2009

Где вы положили функцию "foo"? Я не знаю почему, но всякий раз, когда я видел это, решение состоит в том, чтобы записать макрос с ямочками и позволить Excel создать новый модуль для кода этого макроса. Затем поместите вашу функцию "foo" в этот модуль. Ваш код работает, когда я следую этой процедуре, но если я помещу его в модуль кода, прикрепленный к «ThisWorkbook», я получу результат #NAME, о котором вы сообщаете.

0 голосов
/ 18 февраля 2009

включает имя файла, подобное этому

=PERSONAL.XLS!foo(10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...