ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 21890|回复: 22

[分享]不加载分析工具库,单一调用其中函数 的方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-10-25 00:19 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:自定义函数开发

不加载分析工具库,单一调用其中函数 的方法

 EXCEL 提供了“分析工具库”加载宏 里面有100多个函数,要使用这些函数,通常要进行手工加载

菜单栏 : 工具 --》 加载宏  在弹出的窗体里面 勾选 分析工具库 。

比如求最小公倍数(lcm)单元格里输入 =LCM(36,90,72) 可以得到 360

如果我只需要这一个函数 而又不想手工加载分析工具库,可以使用run 方法来单一调用 lcm函数
先看一下run的帮助

运行一个宏或者调用一个函数。该方法可用于运行用 Visual Basic 或 Microsoft Excel 宏语言编写的宏,或者运行 DLL 或 XLL 中的函数。

expression.Run(Macro, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
expression      必需。该表达式返回一个 Application 对象。

Macro      Variant 类型,可选。所要运行的宏。既可以是一个带有宏名的字符串,也可以是指示此函数所在位置的 Range 对象,或者是一个已注册的 DLL (XLL) 函数的注册号。如果使用字符串,将在当前工作表环境中对此字符串求值。

Arg1-Arg30      Variant 类型,可选。传递给函数的参数。


 “一个已注册的 DLL (XLL) 函数的注册号”可以用宏表函数 REGISTER 来获取
 而在VBA中运行 宏表函数 要用 ExecuteExcel4Macro 方法
  id = ExecuteExcel4Macro("REGISTER.ID(""" & Application.LibraryPath & "\Analysis\ANALYS32.XLL"",""lcm"")")  

注意 ""lcm""  此处的 lcm 为函数名,并区分大小写。

运行此代码后 即便没有加载“分析工具库”, 在单元格中已经可以使用 lcm函数

如要在VBA代码中使用
则加一句 
id = ExecuteExcel4Macro("REGISTER.ID(""" & Application.LibraryPath & "\Analysis\ANALYS32.XLL"",""lcm"")") 
x = run(id,36,90,72)  'x= 360

ANALYS32.XLL中的函数名称并非全部都是小写,而是大小写混杂。

在手工加载“分析工具库”后,运行以下过程可以得到真实的函数名。

Sub getfnNAME
theArray = Application.RegisteredFunctions
If IsNull(theArray) Then
    MsgBox "No registered functions"
Else
    For i = LBound(theArray) To UBound(theArray)
        For j = 1 To 3
            Worksheets("Sheet1").Cells(i, j). _
                Formula = theArray(i, j)
        Next j
    Next i
End If
End sub

这样就能实现对函数的 单一调用。

TA的精华主题

TA的得分主题

发表于 2008-10-25 01:39 | 显示全部楼层

[em05][em05]

拿凳子来学习!

[此贴子已经被作者于2008-10-25 1:42:54编辑过]

TA的精华主题

TA的得分主题

发表于 2008-10-26 20:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
顶一个!
可惜楼上的把沙发当板凳坐,老朽拿板凳和楼上的换沙发,肯不?

TA的精华主题

TA的得分主题

发表于 2008-10-26 20:22 | 显示全部楼层
呵呵,20:00点准时上来,可惜是老朽的新注册的一个号码登录的!
一上来就回复了上面的帖子!
总版主解释说,老朽还没有等系统完全初始化就上来,所以老朽这个号码没有办法登录,只好临时注册了一个新号上来了!

TA的精华主题

TA的得分主题

发表于 2008-11-9 11:33 | 显示全部楼层

回复 1楼 ldy 的帖子

可不可以在简单一点啊,直接把加载工具箱的过程用录制宏的办法完成,在启动是运行那个宏就好了,这样所有需要加载的公式就都能用了 :)

TA的精华主题

TA的得分主题

发表于 2008-11-9 12:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-11-13 13:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
其实还是加载了,只是方式不一样
REGISTER

TA的精华主题

TA的得分主题

发表于 2008-11-26 08:11 | 显示全部楼层
谢谢李老师,又出新作品了!下载收藏学习来着!

TA的精华主题

TA的得分主题

发表于 2008-11-26 08:21 | 显示全部楼层
测试了一下,还是没搞懂,到底该怎么调用!

老师能否做个具体的示例?

TA的精华主题

TA的得分主题

发表于 2009-1-13 09:45 | 显示全部楼层

谢谢

你的方法值得学习!谢谢你了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 13:34 , Processed in 0.036551 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表