。复制后需要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行复制命令需要暂停?