VBA Excel中的用户定义函数不可访问?

Posted

技术标签:

【中文标题】VBA Excel中的用户定义函数不可访问?【英文标题】:User-defined Function in VBA Excel is Not Accessible? 【发布时间】:2018-06-26 09:25:13 【问题描述】:

我在我的 VBE 中的一个模块中有这个功能,但是当我尝试在我的用户窗体中访问它时,我收到一个错误,因为它无法被 VBE 检测到:

这是Col_Letter 函数:

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

我也尝试添加Public:

Public Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

【问题讨论】:

你的模块也被命名为Col_Letter。更改模块的名称,它会工作。 我总是在模块名称前加上'm',类模块加上'cls'。现在我知道为什么了 8-) 【参考方案1】:

使用与公共函数同名的模块命名是一个非常糟糕的主意。更改Col_Letter模块的名称或函数的名称。

【讨论】:

对。我一直很困惑为什么它不起作用。谢谢 @MarcSantos - 欢迎您。制作函数public 是很好的第一步。 @MarcSantos 我发现有帮助的是对对象和变量使用类型声明前缀(例如,lng_Users 用于 Long 变量,frm_Users 用于用户窗体,mod_Users 用于一个模块等) - 当您在以后查看代码以弄清楚所有内容是什么/做什么时,它也会变得更加容易 @Chronocidal - 这是 *** 的创建者的一篇很棒的文章,它 100% 反对这种做法。阅读它,它可能会永远改变你的编码风格 - joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong

以上是关于VBA Excel中的用户定义函数不可访问?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL 的自定义 VBA 函数中的用户定义警告

VBA Excel - 访问查询不可更新

Excel VBA - 条件格式中的用户定义函数

用户定义的函数,它接受 Excel VBA 中的连续和不连续范围

通过用户定义的函数VBA缩短excel公式

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