我有一个在打开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行数据,所以即使它是一个整数,这仍然不应该导致问题。
有没有人知道为什么这会突然引发一个溢出错误,如果有什么我应该寻找的?
答案 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
' ^^^^^^