2016-08-17 86 views
0

下面的脚本当前循环访问数据列表,并根据单元格中的值将范围从一个工作簿复制到另一个工作簿。将数据从一个工作簿传输到另一个工作簿

For i = 3 To LastRow 

If Cells(i, 1) <> "" And Cells(i, 13) = "ü" Then 
Range(Cells(i, 1), Cells(i, 12)).Select 
Selection.Copy 

workbooks.Open Filename:=iForm 
Worksheets("Statistics").Select 
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

Worksheets("Statistics").Cells(erow, 1).PasteSpecial Paste:=xlPasteValues 
ActiveWorkbook.Save 
ActiveWorkbook.Close 
Application.CutCopyMode = False 
End If 
Next i 

而是复制从A范围:L我想复制列A & L,我试图更新此然而我不断收到错误,请帮忙。 我提前感谢你。

+0

当使用多个工作簿/工作表时,你应该使用变量来存储这些。 [不要使用'.Select' /'.Activate'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。你可能从中得到错误。例如,'erow'应该等于'ActiveSheet.Cells(ActiveSheet.Rows.Count,1).End(xlUp).Offset(1,0).Row',但是你应该将'Activesheet'打算与之合作。另外,你在哪一行发现了什么错误? – BruceWayne

+0

@BruceWayne。在尝试复制A&L时,我调整了以下一行,返回错误13(类型不匹配)'Range(Cells(i,1)and Cells(i,12))。选择' – Paul

+0

奇怪 - 它不应该。那之前的代码是什么?我会假设它是你使用工作表的。如果数据在“统计”表单上,请尝试:工作表(“统计”)。范围(工作表(“统计”)。单元格(i,1),工作表单元(“统计”)单元格))。选择' – BruceWayne

回答

0

我想我明白你在想什么。我建议给您的工作表一个变量,然后你可以通过选择Range()整个列:

Sub t() 
Dim mainWS As Worksheet 
Set mainWS = ActiveWorkbook.Worksheets("Sheet1") ' Tweak as necessary, this sheet is where your main data is (the non-blank cell, and "ü") 

lastRow = mainWS.Cells(mainWS.Rows.Count,1).End(xlUp).Row 'or whatever your formula is. Make sure to reference the worksheet 

For i = 3 To lastRow 
    If mainWS.Cells(i, 1) <> "" And mainWS.Cells(i, 13) = "ü" Then 
     mainWS.Range("A:A,L:L").Select 
     Selection.Copy 

     Workbooks.Open Filename:=iForm 
     'Worksheets("Statistics").Select 
     Set statWS = ActiveWorkbook.Worksheets("Statistics") 

     erow = statWS.Cells(statWS.Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

     statWS.Cells(erow, 1).PasteSpecial Paste:=xlPasteValues 
     ActiveWorkbook.Save 
     ActiveWorkbook.Close 
     Application.CutCopyMode = False 
    End If 
Next i 

End Sub 

和注释,我留在.Select,只是为了保持它类似于您的OP。虽然你一定要看看avoid using .Select

+1

这很好,谢谢布鲁斯。诚然,它还没有工作,但我可以调整它与我的工作表一起工作。谢谢 :) – Paul

相关问题