这个脚本踢我的屁股。向前迈出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
答案 0 :(得分: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
...
表示我没有显示的大量代码,因为我想让重要部分更清晰。