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)