。复制后需要DoEvents才能包含整个范围?

我有一个过程,通过SharePoint服务器上的大量文件循环并合并它们。 我注意到一些数据丢失了,当特定的文件是当前的源文件时,通过代码。

我发现当我使用.Copy时,并没有复制我指定的全部数据。 它正在一个隐藏的行中停止数据被过滤。 我注意到,如果我在通过复制线之后停止了该过程,那么只要我停止复制,其余数据就会在复制范围内。 所以我试着在复制行之后放置一个DoEvents,而且似乎可行。

简单的例子:

此代码复制B13:BY1270(由于filter而隐藏的行之前的第一个连续范围的末尾)

Range("B13:BY" & Range("B1500").End(xlUp).Rows.Row).Copy 

此代码复制B13:BY1270和B1274:BY1375(2个单独的连续范围,不包括隐藏的过滤行)

 Range("B13:BY" & Range("B1500").End(xlUp).Rows.Row).Copy DoEvents 

我的问题是,这背后的逻辑是什么? 为什么是Range("B1500").End(xlUp).Rows.Row的行号Range("B1500").End(xlUp).Rows.Row在没有DoEvents情况下被忽略? 为什么简单的1行复制命令需要暂停?