Excel UDF 中的公共数组

Posted

技术标签:

【中文标题】Excel UDF 中的公共数组【英文标题】:Public Arrays in Excel UDFs 【发布时间】:2015-12-03 16:32:27 【问题描述】:

32 位 Excel 2015 | 64位Win7

我有一个名为 LDMod 的模块

看起来像这样

Public MyArray()

Function DoinStuff()
if **IDKWhatTOPutHere** MyArray then Call FillMyArray
DoinStuff = "Done"
End Function

Sub FillMyArray
ReDim MyArray(1 to 10, 1 to 10)
For .....
   ....Blah
Next 
End Sub

我的目标是创建并填充一次公共数组,然后由函数反复使用它,而不是在每次调用函数时为每个单元重新创建数组。

问题是双重的:

    我不知道如何检查 MyArray 是否已创建 IDKWhatToPutHere 我的公共数组减速不允许我调用变量数组

【问题讨论】:

没有优雅的方法来查看数组是否已被标注。使用您在FillMyArray 中设置为true 的全局mIsFilled 变量并使用if not mIsFilled then Call FillMyArray 取决于你对优雅的定义我猜:cpearson.com/Excel/IsArrayAllocated.aspx 好的,这会起作用——关于第二部分的任何想法——出于某种原因,我的函数正在创建一个 MyArray 的新实例,而不是使用公共变量我得到了“可以“不编译模块”值 【参考方案1】:

@Alex,我确实决定只使用一个虚拟变量来保存布尔值

为了解决更大的问题 - 无法定位我的数组,我创建了一个 sub 来使我的数组变暗,然后它只是稍后被另一个 sub 重新调整 - 这并不漂亮,但此时功能胜过形式。

Public LDMCArray()
Public LDMCFillCheck As Boolean

Sub InitializePublicDims()
LDMCFillCheck = False
ReDim LDMCArray(1 To 2, 1 To 2)
End Sub

如果有人想到更好的解决方案,我很乐意在这个函数中加入更多形式...

【讨论】:

以上是关于Excel UDF 中的公共数组的主要内容,如果未能解决你的问题,请参考以下文章

Vue封装一个导出Excel的组件或公共函数

如何按数组中的公共元素分组?

找出两个整型数组中的公共元素的最大值

2021-09-15:最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ““。力扣14。

LeetCode -- 求字符串数组中的最长公共前缀

如何使数组中的公共变量工作?