我一直在使用Arr=Array(Array(),Array())
初始化一个2D数组。
但是我发现运行时错误5-无效的过程调用或参数将被触发。
这些代码已经使用多年,昨天出现了问题,所以我认为这可能是MS Office或Windows的一些更新的结果。
Windows :Windows10、7存在错误,但Windows .不存在此错误
若要再现错误:
Sub foo()
Dim Arr As Variant
Arr = Array(Array(), Array())
End Sub
发布于 2019-08-15 12:41:50
这是因为微软在2019年8月13日(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1182)推出的安全更新中发现了一个漏洞。
查找与Windows版本相关的KB编号并键入(32/64位)并卸载更新。这将解决这个问题。
微软正在考虑修复更新中的错误。
更新
微软刚刚发布了一个补丁:https://support.microsoft.com/en-us/help/4517298/windows-8-1-update-kb4517298
发布于 2019-08-18 00:36:47
有一个用于创建空数组的解决办法。
您可以使用SafeArrayCreateVector API-函数。
Private Declare Function EmptyVariantArr Lib "oleaut32" _
Alias "SafeArrayCreateVector" (Optional ByVal VT As VbVarType = vbVariant, _
Optional ByVal LB& = 0, Optional ByVal cElements& = 0) As Variant()
Dim A()
A() = EmptyVariantArr
https://stackoverflow.com/questions/57504012
复制相似问题