在Excel VBA中创建自定义工作表函数

Tom*_*lak 13 excel vba excel-vba user-defined-functions

我有一个微弱的记忆,能够使用VBA函数来计算Excel中的值,像这样(作为单元格公式):

=MyCustomFunction(A3)
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

编辑:

这是我的VBA功能签名:

Public Function MyCustomFunction(str As String) As String
Run Code Online (Sandbox Code Playgroud)

该功能位于ThisWorkbook模块中.如果我尝试在工作表中使用它,如上所示,我得到#NAME?错误.


解决方案(谢谢,代码):定义ThisWorkbook模块时无法访问该功能.它必须位于"正确"模块中,该模块已手动添加到工作簿中.

cod*_*ape 20

是的,它可以.您只需在模块中定义VBA函数.有关示例的详细介绍,请参阅http://www.vertex42.com/ExcelArticles/user-defined-functions.html.

这是一个简单的例子:

  • 创建一个新的工作簿
  • 切换到VBA视图(Alt-F11)
  • 插入模块:插入| 模
  • 单元内容:
Option Explicit

Function MyCustomFunction(input)
    MyCustomFunction = 42 + input
End Function
  • 切换回工作表(Alt-F11),并输入一些值:
A1: 2
A2: =MyCustomFunction(A1)

  • 嗯,似乎我选择的模块是错误的.它不能位于ThisWorkbook模块中,而是单独使用.谢谢.:) (3认同)