13

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

=MyCustomFunction(A3)

这可以做到吗?

编辑:

这是我的 VBA 函数签名:

Public Function MyCustomFunction(str As String) As String

该功能位于ThisWorkbook模块中。如果我尝试在上面显示的工作表中使用它,我会收到#NAME?错误消息。


解决方案(谢谢,codeape):该功能在定义ThisWorkbook模块时无法访问。它必须位于“正确”的模块中,该模块已手动添加到工作簿中。

4

2 回答 2

20

是的,它可以。您只需在模块中定义一个 VBA 函数。请参阅http://www.vertex42.com/ExcelArticles/user-defined-functions.html以获得很好的示例介绍。

这是一个简单的例子:

  • 创建新工作簿
  • 切换到 VBA 视图 (Alt-F11)
  • 插入模块:插入 | 模块
  • 模块内容:
选项显式

函数 MyCustomFunction(输入)
    MyCustomFunction = 42 + 输入
结束功能
  • 切换回工作表 (Alt-F11),然后输入一些值:
A1:2
A2: =MyCustomFunction(A1)
于 2009-04-16T12:00:35.927 回答
4

单词输入需要替换,因为它是一个基本关键字。尝试 num 代替。您还可以通过指定类型(例如变体)更进一步。

Function MyCustomFunction(num As Variant)
    MyCustomFunction = 42 + num
End Function
于 2010-03-23T14:51:10.520 回答