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 中的公共数组的主要内容,如果未能解决你的问题,请参考以下文章
2021-09-15:最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ““。力扣14。