在.Copy之后需要DoEvents包括整个范围?

时间:2015-11-10 15:14:23

标签: excel vba excel-vba

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

我发现当我使用.Copy时,它并没有复制我指定的整个数据范围。它停在数据被过滤的隐藏行。我注意到,如果我在完成复制线之后停止了该过程,那么一旦我停止它,其余数据就会在复制范围内。所以我尝试在复制线之后放置一个DoEvents,这似乎有效。

简化示例:

此代码复制B13:BY1270(由于过滤器而导致隐藏行之前的第一个连续范围的结束)

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的行号在没有DoEvents的情况下被忽略?为什么简单的1行复制命令需要暂停?

0 个答案:

没有答案