2017-04-25 450 views
0

我有一个运行在Excel工作簿被打开,基本上采取由一个名为“当前日期”选项卡数据,并移动到“前一天”,然后一个宏接受错误来自其他工作簿的数据并将其粘贴到当天(实际使用range.value而不是复制/粘贴)。一切工作都很好,可以在几天内进行多项测试。但是,现在它会在代码的Range.Value部分引发溢出错误。这绝对不是一个规模问题,因为代码是:Excel VBA中“溢出”关于设置Range.Value

PrevDay.Range("A1:Q" & ScoreCurRows).Value = CurrDay.Range("A1:Q" & ScoreCurRows).Value 

凡ScoreCurRows被声明为长,并从“当前日”片拉UsedRange和PrevDay被定义为表(“前一天”)和CurrDay被定义为表格(“当日”)。它通常还有20行以下的数据,所以即使它是一个整数,这仍然不应该引起问题。

没有人有一个想法,为什么这突然抛出溢出错误,如果有什么我应该寻找?

+1

“ScoreCurRows”的确切定义是什么? – SJR

+1

'Debug.Print ScoreCurRows'有什么价值,当它崩溃? –

+0

这是17..20集ScoreCurRows =表(“当前日”)。UsedRange.Rows.Count ......不作它甚至还没有接近为溢出,即使它是一个整数 – MattE

回答

1

必须具有在导致溢出的源范围内的一些值时,VBA试图将它们加载到一个变量数组中

= CurrDay.Range("A1:Q" & ScoreCurRows).Value 

例如,格式化为日期值的单元格这对于约会来说太大了。出于这个原因,使用.Value2相反,它将返回日期为正常的数字,但不尝试转换them.Besides,虽然SO donmt坚持这一规则的大部分信息,在读取范围时已知良好的实践总是使用.Value2值(不一定在分配时)。

PrevDay.Range("A1:Q" & ScoreCurRows).Value = CurrDay.Range("A1:Q" & ScoreCurRows).Value2 
'                     ^^^^^^