Bru*_*yne 10 excel vba excel-vba
我一直在搜索,我知道如何从VB宏调用Personal.xlsb中的函数,但是如何调用该函数在新工作簿中使用?
这是我的功能,保存在我的'Module1'中Personal.xlsb:
Public Function GetColumnLetter(colNum As Integer) As String
Dim d As Integer
Dim m As Integer
Dim name As String
d = colNum
name = ""
Do While (d > 0)
m = (d - 1) Mod 26
name = Chr(65 + m) + name
d = Int((d - m) / 26)
Loop
GetColumnLetter= name
End Function
Run Code Online (Sandbox Code Playgroud)
我创建了一个新的工作簿,并认为我可以调用它=getcolumnletter(1),但是当我开始输入时,该函数不会"填充"=...
我忽略了什么?如何在没有VBA的情况下在其他工作簿中使用此功能?
谢谢你的建议!
Bru*_*yne 18
啊,这比我想象的要简单.只需在宏之前使用工作簿名称 - 所以=Personal.xlsb![macroname].所以在我的情况下,我只是把它放到单元格中:=Personal.xlsb!GetColumnLetter(2)返回"B".
Ega*_*lth 14
正如您已经发现的那样,您可以使用文件名为函数添加前缀Personal.xlsb!.但请注意,如果您想避免为函数添加前缀,可以使用两个选项:
选项1在将调用该函数的每个工作簿中
创建一个引用.打开要使用该功能的工作簿,然后转到VBA编辑器.在菜单上,单击Tools --> References....在出现的对话框中,勾选VBA项目的框Personal.xlsb.请注意,它将与项目名称一起列出(除非您更改了默认名称,否则为"VBAproject")而不是文件名; 如果其他工作簿处于打开状态,则可能存在多个具有默认名称"VBAproject"的条目,因此您可能需要先将其重命名.更多细节可以在本文中找到,该文章发布在OP之后:http://www.myonlinetraininghub.com/creating-a-reference-to-personal-xlsb-for-user-defined-functions-udfs
选项2
如果您想要一个真正的通用UDF,无论是前缀还是引用都可以使用,您可以将其作为加载项安装.这是通过使用UDF将文件保存为文件来完成的.xlam(这显然是一个单独的文件personal.xlsb.)来自同一来源的单独文章中的其他详细信息:http://www.myonlinetraininghub.com/create-an-excel -add式换用户定义函数-的UDF
Personal.xlsb!我认为这可能是避免在外部表调用中以文件名作为函数前缀的最佳解决方案
在 VBA 属性窗口中,将 Personal.xlsb ThisWorkbook 的“IsAddin”属性设置为 True。Personal.xlsb!现在,当您在外部工作表上使用其功能时,无需键入前缀。此行为没有记录。
https://learn.microsoft.com/en-us/office/vba/api/excel.workbook.isaddin
神奇的是,前缀将在对其工作表函数的现有表内调用中消失。当您在 True 和 False 之间切换 IsAddin 时,现有的表内调用不会中断。
优点
注意事项
Private Sub Workbook_Open()
ThisWorkbook.IsAddin = True
End Sub
将 IsAddin 设置为FALSE,转到 Excel 前端,确保您正在查看 Personal.xlsb 工作表(而不是其他工作簿),然后单击“查看功能区”>“隐藏”。关闭 Excel 时,接受提示“将更改保存到 Personal.xlsb?” 现在它的外观和行为就像普通的 Personal.xlsb。
要将将来的编辑保存到 Personal.xlsb:
| 归档时间: |
|
| 查看次数: |
13168 次 |
| 最近记录: |