代码之家  ›  专栏  ›  技术社区  ›  Tomalak

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

  •  12
  • Tomalak  · 技术社区  · 16 年前

    我对使用vba函数在Excel中计算值的能力记忆犹新,例如(作为单元格公式):

    =MyCustomFunction(A3)
    

    能做到吗?

    编辑:

    这是我的VBA函数签名:

    Public Function MyCustomFunction(str As String) As String
    

    函数位于 ThisWorkbook 模块。如果我尝试在上面所示的工作表中使用它,我会得到 #NAME? 错误。


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

    2 回复  |  直到 11 年前
        1
  •  19
  •   codeape    16 年前

    是的,可以。您只需在模块中定义一个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)
    
        2
  •  4
  •   TMD    15 年前

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

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