2011-01-29 63 views
1

运行动态数组时,我试图获取元素的内容并收到以下错误Run-Time Error '16': Expression too complex.复杂的表达式?VBA错误代码“运行时错误16,太复杂”

Impactdays是一个长期的,我只需馅的范围内进入阵列

ReportArray = Impact_Chart.Range("Data.EventNumber").CurrentRegion.Value 

For i = LBound(ReportArray) + 1 To UBound(ReportArray) 

If ReportArray(i, iImpactCol) > 0 Then 
     iImpactDays = ReportArray(i, iImpactCol)<-- Tosses error here 

     'more stuff 

任何想法哦一切的大师填充电子表格? :) 哦,这是2007年

+0

是否抛出错误的_first_一次到达这条线,或经过几次成功的呼叫?如果是后者,可能是某种内部堆栈溢出。 – Dave

+0

实际上它似乎试图评估该字段中的0(零)。它由于某种原因正在通过If Reportarray(i, iImpactCol) > 0电话。我用这个来检查 – CABecker

回答

4

检查,如果你不使用类似

If (Not MyArray) = -1 

在程序的某个地方。 It has been reported与你的错误之间的联系。

HTH!

+0

是我的阵列的尺寸arrayTester =(不TargetArray)= TRUE 如果(不arrayTester)然后 IsArrayDimensioned =真 结束如果 – CABecker

+0

,我想我需要拿出来做其他的事情。 – CABecker

+0

@CAB使用变量作为标志,并对其进行测试。看到外部链接的线程。 –

0

我没有删除有问题的堆栈指针和使用下列检查,而不是

Function IsArrayDimensioned(TargetArray() As Variant) As Boolean 
Dim s As Integer 
On Error Resume Next 
s = UBound(TargetArray, 1) 
If Err.Number = 0 Then 
    IsArrayDimensioned = True 
Else 
    IsArrayDimensioned = False 
End If 
End Function 

像宣传的那样