Excel VBA"溢出"设置Range.Value时出错

时间:2017-04-25 21:06:32

标签: excel vba excel-vba runtime-error overflow

我有一个在打开Excel工作簿时运行的宏,并且基本上从名为"当前日期"的选项卡中获取数据。并将其移至前一天"然后从另一个工作簿中获取数据并将其粘贴到当天(实际上使用range.value而不是复制/粘贴)。几天来,一切都很好地进行了多次测试。但是,现在它在代码的Range.Value部分抛出了溢出错误。这绝对不是一个大小问题,因为代码是:

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

将ScoreCurRows声明为Long并从"当前日期"中拉出UsedRange。 sheet和PrevDay定义为Sheets(" Previous Day")和CurrDay定义为Sheets(" Current Day")。它通常也不到20行数据,所以即使它是一个整数,这仍然不应该导致问题。

有没有人知道为什么这会突然引发一个溢出错误,如果有什么我应该寻找的?

1 个答案:

答案 0 :(得分:2)

当VBA尝试将其加载到

中的变量数组中时,必须在源范围中有一些导致溢出的值
= CurrDay.Range("A1:Q" & ScoreCurRows).Value

例如,格式为日期的单元格,其值对于日期来说太大。出于这个原因,请使用.Value2代替,这会将日期作为正常数字返回而不尝试转换它们。除此之外,虽然SO donmt上的大多数帖子都遵守此规则,但始终<< / em>在读取范围值时使用.Value2(不一定在分配时)。

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