【发布时间】:2016-08-16 09:21:53
【问题描述】:
我有一个循环激活某个文件并复制数据;它不工作,我不明白为什么。请看下面:
For Each w In Workbooks
If w.Name Like "*File 1*" Then
Windows(w.Name).Activate
Sheets("Test").Range("C7:C15").Copy
End If
Exit For
Next w
存在通配符是因为实际上,每周文件名都会从“文件 1 - 星期 1”变为“文件 1 - 星期 2”,依此类推。 关键是,vode 停止在 like 运算符行,所以假设“File 1”有问题?
非常感谢任何帮助
【问题讨论】:
-
看起来不错。除非
w.Name不存在。 -
如果名称始终为“文件 1 等”。那么
Like应该是Like "File 1*"删除第一个通配符,否则它会在文件 1 之前需要一些东西 -
代码停止时的错误信息是什么? (并且您应该设想删除代码中的所有
.Activate和其他.Select,它们通常比其他东西更麻烦,请参阅here) -
好的,检查 w.Name 的值。
-
感谢大家的帮助。事实证明 Ryan 是正确的。 “Exit For”的缩进和位置非常重要。代码跳过循环的原因是因为它在第一次尝试后确实没有找到“文件 1”。重新定位出口以使其仅在找到匹配项后停止。