|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 leolee82 于 2022-2-13 10:20 编辑
- Sub LambdaTest()
- a = 1
- b = 2
- Set Lambda = Lambda.Create(AddressOf LambdaCallBack, a, b)
- x = Lambda(3, 4) 'a+b+3+4=10
- y = Fun(Lambda, 5, 6) 'a+b+5+6=14
- End Sub
- Function Fun(fn As Lambda, m, n)
- Fun = Lambda(m, n)
- End Function
- '回调函数
- '第二个参数是long类型,在64位下会出问题
- Public Sub LambdaCallBack(Ret, ByVal unused As Long, arrCapture, arrParams)
- Dim i As Long
- For i = LBound(arrCapture) To UBound(arrCapture)
- Ret = Ret + arrCapture(i)
- Next
- For i = LBound(arrParams) To UBound(arrParams)
- Ret = Ret + arrParams(i)
- Next
- End Sub
复制代码
10多年了,原来还有VBA基础知识的盲区,终于搞出高效的Lambda了,仅支持32位office。内部用通用的CallWindowProcA实现回调函数功能,改改可以支持64位office。
其实挺简单的,搞不懂的话导出Lamda模块看看,估计80%以上的人都不知道这个知识点
LambdaTest.zip
(19.6 KB, 下载次数: 79)
2022-2-13发现原代码里的Lamda拼错了,应该是Lambda,已更正。误人子弟了,误人子弟了。
|
评分
-
3
查看全部评分
-
|