2016-04-16 5 views
4

Я создал модуль, называемый foo в моей таблице, а затем я добавил к нему следующий:#NAME с модулем и функцией одного и того же имени

Function foo() As Variant 
    foo = 5 
End Function 

Когда я пытаюсь запустить функцию в Excel, с помощью набрав =foo() в ячейку, я получаю #NAME. Когда я смотрю на то, что #NAME должно означать, нажав на иконку рядом с ним, а затем help on this error я получаю это:

enter image description here

Ну, не совсем так, но это было примерно так же полезно.

В конце концов я обнаружил, что изменение имени модуля на что-то, кроме foo, казалось, исправить. Я наткнулся на ошибку или функцию? Где такое поведение задокументировано?

+0

Вы, конечно, имеете в виду '= foo()'? – Vegard

+0

@Vegard yup, исправленный. – arman

ответ

5

Поскольку возможны несколько модулей, и все функции могут иметь общедоступные функции, также возможно, что существует несколько публичных функций с тем же именем, но в разных модулях. Вот почему вы можете позвонить UDF с =foo.foo(). Это вызывает функцию с именем «foo» в модуле с именем «foo». Вот почему =foo() потерпит неудачу, если есть модуль с именем «foo», потому что foo сначала оценивается как имя модуля.

Смежные вопросы