Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA,溢流错误_Vba_Excel - Fatal编程技术网

Excel VBA,溢流错误

Excel VBA,溢流错误,vba,excel,Vba,Excel,我在excel工作表中使用VBA,它给了我一个超视距错误。当我检查时,我发现它与数据错误有关,在一个单元格中显示未限制的“#”字符 每个单元格中的所有值都分配给一个字符串变量,当该单元格出现时,将生成溢出错误。我试图使用if条件验证这一点,但每当我们检查cell.value时,就会产生溢出错误。有没有办法解决这个问题?尝试使用“ISERROR()”函数过滤掉无效值 IF(ISERROR(A1),0,A1) 如果你在做这样的事情 Dim s as string Dim cl as Range .

我在excel工作表中使用VBA,它给了我一个超视距错误。当我检查时,我发现它与数据错误有关,在一个单元格中显示未限制的“#”字符

每个单元格中的所有值都分配给一个字符串变量,当该单元格出现时,将生成溢出错误。我试图使用if条件验证这一点,但每当我们检查cell.value时,就会产生溢出错误。有没有办法解决这个问题?

尝试使用“ISERROR()”函数过滤掉无效值

IF(ISERROR(A1),0,A1)

如果你在做这样的事情

Dim s as string
Dim cl as Range
...
s = cl
' or
s = cl.value
s
将设置为图纸上显示的值,其中包括错误
(以“
错误
”的形式显示,如果工作表上显示的是这种情况

如果基础单元格值有效,您应该能够使用
cl.value2

如果你在做这样的事情

Dim v as Variant
Dim s as string
Dim r as Range
...
Set r = <SomeRange>
v = r
...
Dim v作为变量
像线一样变暗
调光范围
...
集合r=
v=r
...
并且范围
r
中的一个或多个单元格出错,则会发生
运行时错误6溢出

为了进一步提供建议,请发布代码的详细信息、错误发生的位置、单元格值和单元格格式


如果日期序列在1900年1月1日之前(负数)或9999年1月1日之后(>2958101)EDIT实际上是31/12/9999=2958465

,则会出现日期显示:

s = Range("C2").Text
Debug.Print s
' returns: "###########"
如果您真的想读取单元格值,而不是单元格文本(我不知道您为什么需要它,因为您正在将其填充到字符串中),那么这是一种解决方法,假设####是由公元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
Const MaxDateSerial As Double=2958466
像线一样变暗
双精度dbl
Dim-nf作为变体
'保存原始数字格式
nf=范围(“C2”)。数字格式
'使用读取安全数字格式读取单元格内容
范围(“C2”).NumberFormat=“一般”
dbl=范围(“C2”).值
'恢复原始数字格式
范围(“C2”)。数字格式=nf
如果dbl
每当我们使用任何验证时,例如if(isError(objCell.Value)),这会产生运行时错误,
ISERROR
工作表函数对########不起作用。
ISERROR
VBA函数也不起作用。+1很好地回答了一个忘恩负义的家伙不清楚的问题。顺便说一句,溢出发生在1999年12月31日,至少在Excel 2003上是这样。谢谢@Jean-你的日期是对的-我的一个打字错误