Excel VBA“溢出”错误设置Range.Value

我有一个在Excel工作簿打开时运行的macros,基本上从名为“当前date”的选项卡中获取数据并将其移动到“前一天”,然后从另一个工作簿获取数据并将其粘贴到当前date(实际使用范围。值不复制/粘贴)。 一切都工作好几天的多个testing。 但是,现在它在代码的Range.Value部分引发溢出错误。 这绝对不是一个大小问题,因为代码是:

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

其中ScoreCurRows被声明为Long,并从“当前date”工作表拉取UsedRange,PrevDay被定义为工作表(“前一天”),CurrDay被定义为工作表(“当前date”)。 它通常也是20行以下的数据,所以即使它是一个整数,这仍然不应该引起问题。

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

当VBA尝试将它们加载到variables数组中时,必须在源范围中有一些值导致溢出

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

例如,格式为date的单元格的值对于date来说过大。 由于这个原因,使用.Value2 ,这将返回date为正常的数字没有试图转换them.Besides,虽然大多数post都不坚持这个规则,已知最好的做法是总是使用.Value2时读取范围值(不一定在分配时)。

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