2013-01-01 199 views
0

此腳本正在踢我的屁股。向前邁出3步。 :)第一次迭代後執行循環

我有一個指定的文件夾,我的文件坐在那裏,腳本一次一個地通過它們。它會查找以N或V開頭的文件名,然後根據文件類型確定將要複製/粘貼的單元格的範圍。

我基於第一次迭代後第一列的腳本行爲。在腳本確定將要在A列中粘貼數據的位置後,B列數據應根據「firstRange」變量位置進行調整,並使用.Offset(-1,1)將其粘貼在其旁邊。

我需要的腳本第一行的事上,頂,因此該代碼:

.Range("A" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 

第一次迭代後,我需要它開始立足事情了A列下面列結束同一行,這是我使用的地方:

If fileName Like "V*.xls" > 1 Then 

但 - 我不知道這句法是否正確。我試圖讓它在第一次迭代之後開始運行。

這裏的代碼列A和B剪輯:

fileName = Dir(folderPath & "*.xls") 
    Do While fileName <> "" 
Application.ScreenUpdating = False 
    Set wbkCS = Workbooks.Open(folderPath & fileName) 


If fileName Like "V*.xls" Then 
    wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy 
With wbkVer.Worksheets("Cutsheets") 
    Set firstRange = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 
     firstRange.PasteSpecial xlPasteValues 
End With 
ElseIf fileName Like "N*.xls" Then 
    wbkCS.Worksheets("PON Cut Sheet").Range("AV3:AV2000").Copy 
     With wbkVer.Worksheets("Cutsheets") 
    Set ponRange = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 
     ponRange.PasteSpecial xlPasteValues 
End With 
End If 

If fileName Like "V*.xls" > 1 Then 
    wbkCS.Worksheets("Cut Sheet").Range("AA4:AA2000").Copy 
     With wbkVer.Worksheets("Cutsheets") 
      firstRange.Offset(-1, 1).PasteSpecial xlPasteValues 
End With 
ElseIf fileName Like "V*.xls" Then 
    wbkCS.Worksheets("Cut Sheet").Range("AA4:AA2000").Copy 
    With wbkVer.Worksheets("Cutsheets") 
     .Range("B" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
End With 
ElseIf fileName Like "N*.xls" > 1 Then 
    wbkCS.Worksheets("PON Cut Sheet").Range("AA3:AA2000").Copy 
    With wbkVer.Worksheets("Cutsheets") 
     firstRange.Offset(-1, 1).PasteSpecial xlPasteValues 
End With 
ElseIf fileName Like "N*.xls" Then 
    wbkCS.Worksheets("PON Cut Sheet").Range("AA3:AA2000").Copy 
    With wbkVer.Worksheets("Cutsheets") 
     .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
End With 
End If 

回答

2

不,那是不正確的語法。

Infact fileName Like "N*.xls"將始終爲真或假。所以它永遠不會是> 1 I.E. fileName Like "N*.xls" > 1將始終評估爲false。

你可能想要做的就是使用一個布爾值作爲執行代碼的標誌。例如:

fileName = Dir(folderPath & "*.xls") 
dim hasRun as boolean 
Do While fileName <> "" 
... 
    If fileName Like "V*.xls" AND hasRun Then 'This will never run the first time 
... 
hasRun = true 
loop 

...代表大量的代碼我沒顯示,我想使重要的部分更爲清晰。

+0

丹謝謝你!我認爲這是我需要的,現在我正在處理它。稍後會發布。 – Mike

+0

像魅力一樣工作,謝謝! – Mike

+0

哦,至於語法......那就是我所要做的。我不知道如何寫出來,所以嘗試了各種各樣的東西。 :) 再次感謝! – Mike

相關問題