Создайте пользовательскую функцию листа в Excel VBA

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

=MyCustomFunction(A3)

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

EDIT:

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

Public Function MyCustomFunction(str As String) As String

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


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

12 голосов | спросил Tomalak 16 PMpThu, 16 Apr 2009 15:59:03 +040059Thursday 2009, 15:59:03

2 ответа


0

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

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

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

Функция MyCustomFunction (входная)
    MyCustomFunction = 42 + вход
Конечная функция
  • Вернитесь на рабочий лист (Alt-F11) и введите некоторые значения:
A1: 2
A2: = MyCustomFunction (A1)
ответил codeape 16 PMpThu, 16 Apr 2009 16:00:35 +040000Thursday 2009, 16:00:35
0

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

Function MyCustomFunction(num As Variant)
    MyCustomFunction = 42 + num
End Function
ответил TMD 23 MarpmTue, 23 Mar 2010 17:51:10 +03002010-03-23T17:51:10+03:0005 2010, 17:51:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132