gpt4 book ai didi

vba - 在 Excel 中编写公式时如何防止自定义 VBA 函数的建议?

转载 作者:行者123 更新时间:2023-12-02 16:08:38 26 4
gpt4 key购买 nike

我正在编写一系列可以在许多项目中重用的 VBA 函数/子函数。我遇到的问题是,使用工作表时,这些函数列在建议的公式函数中。

enter image description here

将函数设为私有(private)可以防止这种情况发生,但它还会删除显示从函数存储位置以外的模块调用时显示函数参数的方便提示。

enter image description here

有人知道一种方法可以防止自定义函数的建议而不将其设为私有(private)吗?

最佳答案

标准模块的

无参数Public成员是以下两种情况之一:

  • 过程,它们作为公开。
  • Function 过程,它们作为 UDF 公开。

请注意,如果未指定访问修饰符,则成员隐式为Public

具有参数的 Sub 无法作为执行,因此它不会显示为可用的宏。

具有副作用(例如改变某些模块/全局状态,或更改其他单元格的值)的函数是糟糕的代码,并且UDF不能无论如何都要更改另一个单元格的值。

<小时/>

Making the functions private will prevent this, but what it will also do is remove the handy hints showing the parameters for the functions when called from a module other than where the function is stored.

将其设为私有(private)不仅会“删除方便的提示”,还会使其他模块无法访问该函数,并且您的代码将无法编译。

如果您的代码有 UDF,请将它们全部放在同一个标​​准模块中,例如UserFunctions,并为了可读性而将它们显式设置为Public

如果您的代码有宏,请将它们全部放在同一个标​​准模块中,例如,并为了可读性而将它们显式设置为Public

如果您的代码具有需要Public的函数和过程(例如,从UDF和/或宏访问它们),为了可读性,请明确将它们设置为Public ,并将它们放入适当命名的标准模块中(即避免使用 HelperManager 模块,它们不可避免地会成为一个垃圾袋,里面装满了不适合任何地方的东西,并成长为一个困惑)。

然后将其放在顶部:

Option Explicit
Option Private Module

该选项(私有(private)模块)可防止所有公共(public)/公开成员被选取为宏和 UDF。无论如何,Option Explicit 应该就在那里。

<小时/>

另一种方法是在类模块中实现逻辑;如果没有该类的实例(即对象),则无法访问类模块的成员,因此不会将其公开为宏/UDF。

关于vba - 在 Excel 中编写公式时如何防止自定义 VBA 函数的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com