我创建了一个函数,对以下范围内的所有单元格求和
sys.path
当我在立即窗口中运行该函数时,它抱怨运行时错误“溢出”,并且在注释“ Debug.Print”行后该错误消息消失了,这很奇怪。函数Function SumTest(rg As Range) As Double
Debug.Print "SumTest..."
Dim s As Double
s = 0 ' ------> Show runtime error "Overflow" at this line
Dim i As Range
For Each i In rg.Cells
s = s + i.Value2
Next i
SumTest = s
End Function
是否与双变量初始化有关?又为什么在这里发生溢出(我只是将零分配给数据类型为Dbbug.Print
的变量)?
添加了更多信息:
我在Double
的即时窗口中测试该功能(范围?Sumtest(Range("A1:C1"))
中填充了琐碎的测试数据A1:C1
)。 Excel版本是Mac上的Office365。
为了简化测试,我使用了另一个较短的程序,如下所示:
1 2 3
在测试了一些程序之后,我正在考虑这可能是Mac上Excel 2016的错误。似乎一旦使用Function SumTest2() As Double
Dim s As Double
Debug.Print "SumTest2"
s = 0 ' ---> Still "Overflow" here
SumTest2 = s
End Function
,就无法再将值(0或其他值)分配给数据类型为Debug.print
(可以使用Integer,String或其他数据类型)的变量。以下是另一个典型的测试程序:
Double
答案 0 :(得分:-2)
来源:Microsoft Docs:当您尝试进行的作业超出了作业目标的限制时,将导致溢出。该错误具有以下原因和解决方法:
赋值,计算或数据类型转换的结果太大,无法在该类型的变量允许的值范围内表示。
对属性的分配超出了该属性可以接受的最大值。
解决方案:
按如下所示修改您的代码,您将不会再看到该错误。
Function SumTest(rg As Range) As Double
Debug.Print "SumTest..."
Dim s As Double
Dim i As Range
For Each i In rg.Cells
s = s + CDbl(i.Value2)
Next i
SumTest = s
End Function