【问题标题】:VBA "Like" operator and wildcardVBA“喜欢”运算符和通配符
【发布时间】: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”。重新定位出口以使其仅在找到匹配项后停止。

标签: excel vba wildcard


【解决方案1】:

第一次迭代后出现一个问题,您正在退出。从您描述问题的方式来看,听起来您想在找到匹配项后停止搜索,而不是在第一次尝试后停止搜索。

只需移动Exit For,如下所示:

For Each w In Workbooks
    If w.Name Like "*File 1*" Then
        Windows(w.Name).Activate
        Sheets("Test").Range("C7:C15").Copy
        Exit For
    End If
Next w

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2015-06-17
    相关资源
    最近更新 更多