如何在工作表中调用 VBA 函数?

Posted

技术标签:

【中文标题】如何在工作表中调用 VBA 函数?【英文标题】:How do Iinvoke a VBA function inside a Worksheet? 【发布时间】:2019-05-11 17:20:26 【问题描述】:

我有一个简单的 VBA 函数,它保存在受信任的启用宏的工作簿的 ThisWorkbook 中。此函数的代码:GetParameterKey 如下。

我想从同一工作簿中的工作表调用 GetParameterKey 作为电子表格函数。但是,GetParameterKey 不会在插入函数下显示为用户定义的函数。

有没有办法从同一工作簿中的工作表调用在 ThisWorkbook 部分中定义的函数?

Public Function GetParameterKey(natureOfWork As String, size As String, complexity As String, uncertainty As String) As String
'
' GetParameterKey Macro
' Computes a VLOOKUP key for Nature of Work, Size, Complexity, and Uncertainty.
'
    Select Case UCase(Trim(natureOfWork))

        Case "BACK END"
            GetParameterKey = "1"

        Case "FRONT END"
            GetParameterKey = "2"

        Case "BOTH"
            GetParameterKey = "3"

        Case Else
            GetParameterKey = "0"

    End Select

    GetParameterKey = GetParameterKey & CategoryKey(size)
    GetParameterKey = GetParameterKey & CategoryKey(complexity)
    GetParameterKey = GetParameterKey & CategoryKey(uncertainty)

End Function

Function CategoryKey(category As String) As String

    Select Case UCase(Trim(category))

        Case "VERY LARGE"
            CategoryKey = "5"

        Case "LARGE"
            CategoryKey = "4"

        Case "MEDIUM"
            CategoryKey = "3"

        Case "SMALL"
            CategoryKey = "2"

        Case Else
            CategoryKey = "1"

    End Select

End Function

【问题讨论】:

Create a custom worksheet function in Excel VBA的可能重复 Returning value from excel macro vba function is always null的可能重复 【参考方案1】:

将函数放在单独的模块中。

    插入 -> 模块 将函数粘贴到那里(确保它被声明为Public) 您现在应该可以从工作表中调用它了

【讨论】:

以上是关于如何在工作表中调用 VBA 函数?的主要内容,如果未能解决你的问题,请参考以下文章

VBA 如何批量将单元格复制到另一个工作表中

如何在VBA函数中返回总和

Excel VBA 用户定义函数:在工作表函数中获取单元格被调用

如何用函数或VBA调用(引用)另外一个工作表的数据

如何使用Excel VBA仅更新特定工作表中的链接,而不是整个工作簿?

Excel中的VBA如何调用Java呀?