在第一次迭代之后执行循环

这个剧本踢我的屁股。 向前迈了三步。 🙂

我有一个指定的文件夹,我的文件坐在脚本通过他们一次一个。 它会查找以N或V开头的文件名,然后根据文件types确定将要复制/粘贴的单元格的范围。

我将脚本行为从第一次迭代之后的第一列开始。 在脚本确定要在A列中粘贴数据的位置之后,B列数据应根据“firstRange”variables位置进行调整,并使用.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 

不,这不是正确的语法。

Infact fileName Like "N*.xls"将始终为真或假。 所以它永远不会> 1 IE fileName Like "N*.xls" > 1将永远评估为假。

你可能想要做的是有一个布尔值你用作执行你的代码的标志。 例如:

 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 

...代表很多我没有显示的代码,因为我想让重要的部分更清晰。