gpt4 book ai didi

vba - 是否可以为功能分配别名?

转载 作者:行者123 更新时间:2023-12-03 07:32:19 29 4
gpt4 key购买 nike

我正在编写一个简单的函数,例如:

Function myFunction() As Variant
'Some rules
End Function

对于上述功能,是否可以像使用API​​调用那样分配别名?

显然,这不是正确的语法,但是您可以理解:
Function myFunction() Alias myFunc As Variant
'Some rules
End Function

这将允许我使用任何一个名称:
Sub Test()
Debug.Print myFunction
Debug.Print myFunc
End Sub

最佳答案

我不明白为什么您需要VBA功能具有VBA别名。

API别名用于引用DLL中的函数或其他对象,
如果它是“给定名称”,则不能在需要它的模块中使用。

Alias —— Indicates that the procedure being called has another name in the DLL. This is useful when the external procedure name is the same as a keyword. You can also use Alias when a DLL procedure has the same name as a public variable, constant, or any other procedure in the same scope. Alias is also useful if any characters in the DLL procedure name aren't allowed by the DLL naming convention. (Source)



...但是要回答您的问题,请确保您可以为函数创建一个替代名称,而只需对代码进行一些修改即可:

Your Function:

Function myFunction() As Variant
'Some rules
End Function


Assign an alternate name:

Function myFunc() As Variant
myFunc = myFunction
End Function


This would allow you to use either name:

Sub Test()
Debug.Print myFunction
Debug.Print myFunc
End Sub


编辑:“不记得UDF名称”

(当我说我不明白为什么需要这样做时,我以为您没有像我这样的记忆!现在我明白了您的理由,为同一个功能命名多个名称!)

什么,您还没有记住所有自定义VBA函数的名称和语法,除了上千个内置函数,过程和对象以及看似无限的属性,方法和类名列表之外?

我也不。

在VBA中进行编码时,有助于触发我的记忆的一项功能是
属性/方法列表

开始输入函数或过程的名称,然后按 Ctrl + J ,您将获得自定义函数和内置函数,方法,过程等的列表。**

Ctrl+J exanmple

我注意到您的示例函数名称都以“ my”开头。但这可能只是出于说明目的,但是像这样的特定命名约定也可以通过在“属性/方法”对话框中将函数分组在一起来提供帮助。
  • 另请参见: 100多种VBA Keyboard Shortcuts 列表(以防您忘记组合键!)


  • 记住事情如何工作以及被称为什么的更多方法:

    您还可以 向UDF(用户定义的函数)添加描述,该描述会在工作表上输入函数名称时出现:

    UDF Descr screenshot

    另请: How to put a 'Tooltip' on a user-defined function

    有关:
  • Add a Description to a User Defined Function in Excel(无VBA)
  • VBA Productivity Tip: Procedure List
  • The Quest for the Excel Custom Function Tooltip(C#)


  • 比描述更进一步,注册用户定义的函数不仅可以创建该函数的描述,而且还可以提供有关 函数的每个参数及其数据类型的详细信息。您甚至可以指定 快捷键,添加到自定义“ 帮助”文件/页面的链接,甚至为UDF分配 类别

    这些扩展属性显示在 Insert Function 对话框中,可通过单击公式栏左侧的 'FX' button to the left of the formula bar按钮或单击Shift + F3来访问:

    Insert Function dialog

    Excel没有内置的用于编辑参数描述的界面,因此需要VBA。相关文档可能很难找到。

    有关注册用户定义功能的代码和信息
    -:
  • JKP:Registering a User Defined Function with Excel
  • MSDN:Application.MacroOptions Method
  • Add Description To A Custom VBA Function


  • 创建功能区按钮以列出VBA过程

    我没有尝试过,但是我可以看到它非常方便,尤其是因为它很容易进行进一步的自定义,也许可以使用特定于项目的功能列表和其他信息。

    可以将一个按钮添加到功能区,单击该按钮将显示VBA过程/功能的列表,并使用XML和VBA从按钮显示用户表单。还有一个选项 将过程列表保存到文本文件。

    Image from: https://i-msdn.sec.s-msft.com/dynimg/IC297331.jpg

    您已经可以通过“开发人员”选项卡上的“宏”按钮在工作簿中查看过程。但是,在“宏”对话框中仅显示模块中和工作表中的无参数子例程。带参数的功能和子程序不会显示。此列中描述的代码显示工作簿中的所有子例程和函数。

    有关更多信息和完整代码,请参见 here

    编写VBA代码的VBA代码!

    通过以编程方式操纵VBA编辑器(VBE),您可以在VBA中编写代码来读取或修改其他VBA项目,模块和过程,并可以用于自动执行与开发相关的任务。之所以称为 extensibility 是因为它扩展了编辑器-您可以使用VBA代码创建新的VBA代码。您可以使用这些功能来编写用于创建,更改或删除VBA模块和代码过程的自定义过程。

    令人惊叹的 Chip Pearson再次执行了此操作,并提供了详细的说明和完整的代码 ,此处涉及可扩展性可以为您带来的一些有趣的功能。

    Chip页面上的部分代码列表(即 here):
  • 在项目中添加/删除/重命名模块
  • 在模块中添加/删除/重命名过程
  • 在项目之间复制模块
  • 在代码模块中创建新过程
  • 创建事件过程
  • 列出模块
  • 中的所有过程
  • 阅读过程声明
  • 在模块中搜索文本
  • 修复VBE中的屏幕闪烁
  • 将VBComponent导出到文本文件
  • 测试VBComponent是否存在
  • 确定与VBProject关联的工作簿
  • 计数模块/项目/组件中的代码行

  • 这些方法使用 VBA可扩展性 [库]( http://www.exceltoolset.com/setting-a-reference-to-the-vba-extensibility-library-by-code/)(引用),并且需要以编程方式访问VBA项目,这是Excel选项中的安全设置。有关更多信息,请参见Chip页面。

    Chip的页面在 Customizing Menus with VBA上也有大量可用的信息和代码,这可能有助于简化开发人员的工作。

    如果 可控制甚至拦截内置命令,则VBA似乎具有“被遗忘”的功能。这也可以用于使开发人员受益(尤其是内存不足的开发人员!)... Microsoft的更多信息和示例 here

    关于vba - 是否可以为功能分配别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48366006/

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