Excel VBA 代码溢出错误

程序源码

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
    

猜你喜欢

转载自blog.csdn.net/wx601056818/article/details/84192412
今日推荐