Excel VBA溢出错误
我在我的Excel表中使用VBA,它给我一个overlfow错误。 当我检查时,发现它与数据错误有关,在一个单元格中显示未定义的“#”字符。
每个单元格中的所有值都被分配给一个stringvariables,并且当这个单元格进来时会产生一个溢出错误。 我试图validation这个使用if条件,但每当我们检查cell.value这会产生溢出错误。 有没有什么办法解决这一问题?
如果您只是阅读单元格文本,则不会得到运行时错误:
s = Range("C2").Text Debug.Print s ' returns: "###########"
如果你真的想读取单元格值,而不是单元格文本(为什么你需要这个,我不知道,因为你正在填充string),那么这是一个解决方法,假设####是由公元10000年1月1日或以后造成的。
Const MaxDateSerial As Double = 2958466 Dim s As String Dim dbl As Double Dim nf As Variant ' Save original number format nf = Range("C2").NumberFormat ' Use read-safe number format to read cell content Range("C2").NumberFormat = "General" dbl = Range("C2").Value ' Restore original number format Range("C2").NumberFormat = nf If dbl < MaxDateSerial Then s = Range("C2").Value Else s = "Date overflow!" End If
如果你正在做类似的事情
Dim s as string Dim cl as Range ... s = cl ' or s = cl.value
s
会被设置为表格中的diplayed值, 其中包含错误
(以“ Error <Error Code>
”的forms出现,如果这是表单显示的话
如果基础单元格的值是有效的,你应该能够访问如果使用cl.value2
如果你正在做类似的事情
Dim v as Variant Dim s as string Dim r as Range ... Set r = <SomeRange> v = r ...
并且范围r
中的一个或多个单元格是错误,则会发生Runtime Error 6 Overflow
要进一步build议,请发布代码的详细信息,发生错误,单元格值和单元格格式
date显示###############如果date序列在1/1/1900(负数)之前或在1/19999(> 2958101)之后发生,则实际编辑 31/12 / 9999 = 2958465
尝试使用“ISERROR()”函数来过滤掉无效值。
IF(ISERROR(A1),0,A1)