运行时错误6:溢出:Excel VBA

时间:2012-09-18 03:05:29

标签: excel-vba runtime-error vba excel

我一直试图解决这个问题,但不能。我有以下VBA代码。运行时会出现“运行时错误6:溢出”。我想我已经为每个变量分配了一个正确的类型。请帮忙!!

Sub UseCoeff()
Dim a, b As Long
Dim Value1 As Double

ThisWorkbook.Sheets("UseTableBEA").Activate
For b = 2 To 427
    For a = 2 To 431

        Value1 = ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value
        ThisWorkbook.Sheets("UseCoeff").Cells(a, b).Value = Value1

    Next a
Next b
End Sub

每个单元格的结果可能介于0到1之间,最多可达8个小数位。 在此先感谢!!

2 个答案:

答案 0 :(得分:3)

如果ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value为0,则ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value如果ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value也为0,则会导致溢出错误。

要避免这种情况,请使用if语句过滤掉0,只需使用您想要的实际逻辑更新注释:

If ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value = 0 Then
    Value1 = 'Whatever you want but probably 0.
Else
    Value1 = ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value
End If

答案 1 :(得分:2)

Dim a, b As Long

a未被声明为long它被声明为变体尝试这个:

Dim a as long, b as Long

修改 经过测试,它仍会产生Stack Overflow错误。但是,最好正确声明变量。

您也不需要这一行:

ThisWorkbook.Sheets("Sheet1").Activate

如果您声明UseTableBEA,则可以减少代码:

Dim Ws1 as Worksheet
Set Ws1 = Sheets("UseTableBEA")

然后,您可以使用先前使用Ws1

ThisWorkbook.Sheets("UseTableBEA")