Создание пользовательской рабочей таблицы в 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