初始化2D阵列时出现运行时错误5

时间:2019-08-15 01:55:50

标签: arrays vba ms-access access-vba runtime-error

我一直在使用Arr=Array(Array(),Array())初始化2D数组。

但是我发现运行时错误5-无效的过程调用或参数将被触发。

该代码已经使用了多年,并且昨天出现了问题,所以我认为这可能是MS Office或Windows的某些更新的结果。

更新:Windows 10,Windows 7存在错误,但Windows Vista不存在。

要重现错误:

Sub foo()
  Dim Arr As Variant
  Arr = Array(Array(), Array())
End Sub

2 个答案:

答案 0 :(得分:3)

这是由于Microsoft在2019年8月13日(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-1182)推送的安全更新中发现的一个错误

查找与Windows版本相关的KB编号,然后键入(32/64位)并卸载更新。这样可以解决问题。

Microsoft正在研究修复更新中的错误。

更新

Microsoft刚刚发布了一个补丁程序:https://support.microsoft.com/en-us/help/4517298/windows-8-1-update-kb4517298

答案 1 :(得分:0)

有一个workaround用于创建空数组。

您可以使用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 
相关问题