Создание пользовательской рабочей таблицы в Excel VBA

У меня слабое воспоминание о возможности использования функций VBA для вычисления значений в Excel, как это (как формула ячейки):

=MyCustomFunction(A3)

Можно ли это сделать?

EDIT:

Это моя подпись функции VBA:

Public Function MyCustomFunction(str As String) As String

Функция находится в модуле ThisWorkbook. Если я попытаюсь использовать его на листе, как показано выше, я получаю ошибку #NAME?.


Решение (Спасибо, codeape): функция недоступна, если она определена ThisWorkbook. Он должен быть в "правильном" модуле, который был добавлен вручную в книгу.

Ответ 1

Да, может. Вы просто определяете функцию VBA в модуле. См. http://www.vertex42.com/ExcelArticles/user-defined-functions.html для приятного ознакомления с примерами.

Вот простой пример:

  • Создать новую книгу
  • Переключиться на просмотр VBA (Alt-F11)
  • Вставьте модуль: Insert | Модуль
  • Содержание модуля:
Option Explicit

Function MyCustomFunction(input)
    MyCustomFunction = 42 + input
End Function
  • Вернитесь к рабочему листу (Alt-F11) и введите несколько значений:
A1: 2
A2: =MyCustomFunction(A1)

Ответ 2

Ввод слова необходимо заменить, поскольку это ключевое ключевое слово. Попробуйте вместо этого num. Вы также можете пойти дальше, указав тип, например вариант.

Function MyCustomFunction(num As Variant)
    MyCustomFunction = 42 + num
End Function