问什么我的Excel的宏会有问题,老是提示下面的信息,请各位高手帮忙看一下怎么修改?小弟我的表是别人给我

这是其中一段,其中AMTS = AMTS + MPSARY(I1, I3)是显示黄色的,应该是要修改的部分,请各位大侠指点怎么改,谢谢

Dim RQLT_X() As Long
Dim N As Integer
Dim M As Integer
Dim I3_ As Long
Dim AMTS As Long

'N=Val(InputBox(¡°ÊäÈëN=£¿¡±)) 'INCORRECT
'N = InputBox("ÊäÈësc(" & N & ") µÄÖµ") 'SUCCESSFUL
N = WTH_1
M = LEN_1

AMTS = 0
ReDim RQLT_X(N, M)

For J1 = 0 To WTH_1

For I1 = 0 To LEN_1
I3_ = LTARY(J1, 0) - 1

For I3 = 0 To I3_
AMTS = AMTS + MPSARY(I1, I3)
Next I3

RQLT_X(J1, I1) = AMTS
AMTS = 0

Next I1

Next J1
'Cells(10, 1) = RQLT_X(I, J) 'FOR TESTING 6
Range(Cells(PN, RQLT), Cells(PN + WTH_1, RQLT + LEN_1)).FormulaArray = RQLT_X

AMTS = 0
ReDim RQLT_X(N, M)

For J1 = 0 To WTH_1

For I1 = 0 To LEN_1
I3_ = LTARY(J1, 1) - 1

For I3 = 0 To I3_
AMTS = AMTS + MPSARY(I1, I3)
Next I3

RQLT_X(J1, I1) = AMTS
AMTS = 0

Next I1

Next J1
Range(Cells(PN, RQD), Cells(PN + WTH_1, RQD + LEN_1)).FormulaArray = RQLT_X

AMTS = 0
ReDim RQLT_X(N, M)

For J1 = 0 To WTH_1

For I1 = 0 To LEN_1
I3_ = LTARY(J1, 2) - 1

For I3 = 0 To I3_
AMTS = AMTS + MPSARY(I1, I3)
Next I3

RQLT_X(J1, I1) = AMTS
AMTS = 0

Next I1

Next J1
Range(Cells(PN, RQS), Cells(PN + WTH_1, RQS + LEN_1)).FormulaArray = RQLT_X

With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False

因为所给的代码不完整,也没有说明这段代码的功能,所以只能简单地说下可能的问题点与方法了:

1、MPSARY(I1, I3),这个 MPSARY() 从代码段中无法确切地知道这个 MPSARY 是什么,可能是数组吧,也许是一个自定义函数;

2、重点检查下 I1、I3这两个变量的变化范围,是不是超出了 MPSARY()的定义范围;

可以这样来Debug:在报错代码前设置断点再运行,或者在报错时点Debug,在弹出的VBA编辑窗口中把鼠标移到各变量上仔细检查它们的值。还可以通过选中重要的变量或表达式按 Shift + F9 添加到监视,这样就可以通过单步(F8)执行来检查它们值的变化,逐步缩小可疑范围最终确定问题点。

Debug是一个有趣而繁琐的工作,需要斗智斗勇还要耐心与细心。

GoodLuck!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-30
这个不是录制宏吧?应该是VBA,,,,没细看,应该是超上限了。。。。。数组……
第2个回答  2011-01-03
MPSARY如果为数组,要考虑是否与AMTS数据类型不匹配,或者MPSARY数据是否溢出。
在这里按F9下断点后,运行程序,会停在这里,接下来你可以按F8不仅跟踪这个MPSARY函数或者过程,适当利用及时运算窗口输出某一变量的值,看是哪里出现问题。
相似回答