【问题标题】:EXCEL VBA User Defined Function - why do I get the error "function not defined" while I use it in the Workbook where it is defined?EXCEL VBA 用户定义函数 - 为什么我在定义函数的工作簿中使用它时会收到错误“函数未定义”?
【发布时间】:2019-03-07 14:52:13
【问题描述】:

在同一个工作簿中,我定义了函数:

Public Function toto(val As Integer) As Integer
    toto = val * 2
End Function

这是编辑器视图:

在工作表的单元格中,我使用公式:

但结果是(翻译:#NAME?):

此外,在从 Excel 打开的 VBA 执行窗口本身中,尝试执行时出现以下错误:

toto(2)

翻译:编译错误:未定义子或函数

我错过了什么?

【问题讨论】:

  • 你把代码放在哪里了?它需要在公共模块中。
  • FWIW Val 参数隐藏了 VBA.Conversion.Val 函数,可能应该重命名。

标签: excel vba excel-formula


【解决方案1】:

扩展 @Jo.lass 和 @vincent-g 所说的内容,您需要将代码放在模块中,而不是放在工作表或工作簿代码中。见这里:

【讨论】:

  • 您是否尝试过将其单独放入模块中?您是否也将模块称为相同的东西?另一个可能出现#NAME 错误的情况是存在名称冲突。
  • @lalebarde 不,这不是你所拥有的。根据您的屏幕截图,您的代码在 Feuil5 的代码隐藏中,而不是在标准模块中。
  • 对不起,我错过了左侧的“模块 1”。现在可以了!
【解决方案2】:

不要在 VBE 的工作表中编写函数,而是尝试在新模块中编写它。 至少对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多