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

Excel VBA “Overflow” Error on setting Range.Value

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

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

其中ScoreCurRows被声明为Long,并从"当前日期"表中拉出UsedRange,PrevDay被定义为Sheets("上一交易日"),CurrDay被定义为Sheets("当前日")。 它通常也少于20行数据,因此即使它是整数,也不会造成问题。

有谁知道为什么这突然引发了溢出错误,如果我应该寻找什么?


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

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

例如,格式为日期的单元格的值对于日期而言太大。 因此,使用.Value2代替,它将以正常数字返回日期而不尝试进行转换。此外,尽管SO donmt上的大多数帖子都遵循此规则,但众所周知,在阅读时始终使用.Value2 范围值(分配时不一定)。

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