程序源码
Sub tt()
Dim i, j, l, m, n As Double//定义类型
For i = 2 To 100//从2到100 闭区间
For j = 2 To 100
k = Sheet1.Cells(i, j)//把i行j列的内容取出来
l = Sheet1.Cells(i, i)
m = Sheet1.Cells(j, j)
n = k / ((l * m) ^ (1 / 2))
Sheet2.Cells(i, j) = 1 - n //把1-n的内容存到sheet2的i行j列中
Next j //下一个
Next i
End Sub
错误原因:sheet1中没有100行或者100列,导致溢出;还有可能是经过计算的的数值超出了定义类型的范围,具体官方解释如下;
溢出(错误 6)
在尝试进行的分配超出分配目标的限制时,会导致出现溢出。 此错误具有以下原因和解决方法:
-
分配、计算或数据类型转换的结果太大,无法在此类变量允许的值的范围内表示。
将值赋给可保存更大范围的值的类型的变量。
-
属性的分配超出其可接受的最大值。
请确保您的分配适合其目标属性的范围。
-
尝试使用计算中的数字,并且该数字将强制转换为一个整数,但结果大于该整数。 例如:
-
VB复制
Dim x As Long x = 2000 * 365 ' Error: Overflow
若要处理此情况,请键入数字,如下所示:
VB复制
Dim x As Long x = 2000 * 365 ' Error: Overflow
VB复制
Dim x As Long x = CLng(2000) * 365
若要处理此情况,请键入数字,如下所示:
VB复制
Dim x As Long x = CLng(2000) * 365