在第一次迭代之后执行循环
这个剧本踢我的屁股。 向前迈了三步。 🙂
我有一个指定的文件夹,我的文件坐在脚本通过他们一次一个。 它会查找以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
...
代表很多我没有显示的代码,因为我想让重要的部分更清晰。