永发信息网

VBA编程数据分析,怎么总出现下标超出?

答案:2  悬赏:0  手机版
解决时间 2021-03-07 16:25
  • 提问者网友:沦陷
  • 2021-03-07 04:47
Sub FPY()

Dim arr()
Dim arr1()
Dim arr2()
Dim arr3()

arr = Range("a2:e19844") '原始表 i
arr1 = Range("m2:m350") '机种表 x
arr2 = Range("n2:n72") '站别表 y
arr3 = Range("s2:v20000") '生成表

Dim FTotal As Integer '投入数量
Dim FPass As Integer '良品数量

For x = 2 To 350 '遍布机种
For y = 2 To 72 '遍布站别
For i = 2 To 19844 '遍布原始表
If arr(i, 1) = arr1(x, 1) Then
If arr(i, 2) = arr2(y, 1) Then
FTotal = FTotal + arr(i, 5)
FPass = FPass + arr(i, 3)
End If
End If
Next i
arr3(y, 1) = arr1(x, 1)
arr3(y, 2) = arr2(y, 1)
arr3(y, 3) = FTotal
arr3(y, 4) = FPass
Next y
Next x

End Sub
最佳答案
  • 五星知识达人网友:洎扰庸人
  • 2021-03-07 06:03
循环是从2开始的,实际循环到底,x=351;Y=73;i=19845,所以下标超出。
For x = 2 To 349 '遍布机种
For y = 2 To 71 '遍布站别
For i = 2 To 19843 '遍布原始表
这样就可以了。
全部回答
  • 1楼网友:人间朝暮
  • 2021-03-07 07:25
这个地方的下标越界,有两种可能,一是因为不存在stemplatename名字的工作薄造成workbooks(stemplatename)越界,二是effvar(i)值不合理造成工作表sheets(effvar(i))越界。 遇到越界的时候你选择“调试”,添加对上面这些变量的监视,你就知道具体是什么原因导致了越界,然后才能确定解决方法。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯