2016-08-16 76 views
0

我有一個循環激活某個文件並複製數據;它不工作,我不明白爲什麼。請看下面:VBA「喜歡」運算符和通配符

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 - week1」「文件1 - week2」,等等。 問題是,該電臺停在類似的操作員線上,因此推斷「File 1」的問題?

任何幫助,不勝感激

+0

看起來不錯。除非'w.Name'不存在。 –

+0

如果名稱始終是「文件1等」那麼'Like'應該是'Like'文件1 *「'移除第一個通配符,否則它會在文件1之前期待什麼 – DragonSamu

+0

代碼停止時的錯誤消息是什麼? (你應該設想在你的代碼中刪除所有'.Activate'和其他'.Select',他們通常是更麻煩的事情,其他的事情,請看[這裏](http://stackoverflow.com/questions/10714251/how-to -void-using-select-in-excel-vba-macros)) –

回答

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