【问题标题】:VBA Error code "Run Time Error 16, Too Complex"VBA 错误代码“运行时错误 16,太复杂”
【发布时间】:2012-11-27 14:09:30
【问题描述】:

在运行填充的动态数组时,我试图获取元素的内容并收到以下错误 Run-Time Error '16': Expression too complex. The expression that is to complex?

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(零)。由于某种原因,它正在通过 If Reportarray(i, iImpactCol) &gt; 0 调用。

标签: vba excel dynamic-arrays


【解决方案1】:

检查你是否没有使用类似的东西

   If (Not MyArray) = -1  

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

HTH!

【讨论】:

  • 我用它来检查我的数组是否有维度 arrayTester = (Not TargetArray) = True If (Not arrayTester) Then IsArrayDimensioned = True End If
  • 我想我需要拿出来做点别的事情。
  • @CAB 使用变量作为标志,并对其进行测试。请参阅外部链接线程。
  • @CAB 请稍后返回此处确认是否有效。您的意见将帮助他人!
  • 是的,阻止该代码 sn-p out 完全解决了我的问题。我只需要刷一些其他代码来检查我的数组是否有尺寸。
【解决方案2】:

我确实删除了有问题的堆栈指针并使用以下内容进行检查

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

按广告宣传

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多