使用VBA在同一行但不同列粘贴复制的数据

通过我以前提出的问题,新的课题诞生了。 现在,我有几个复制的单元格,我想粘贴到最初的文件(例如,该macros所在的ThisWorkbook)转置。

我尝试的是保持块运算符“FOR”的同一行,将光标移回less数列,并粘贴在那里的select。 但是出现了一个错误。 当我使用统计方式“范围(”C10“)”,但每次程序必须有不同的单元格粘贴在那里。 那么,我该如何处理呢?

先谢谢你!

Option Explicit Sub FileFinder() ' Excel variables: Dim wbResults, oWB As Workbook Dim Sht As Worksheet Dim RngS As Range Dim sDir As String Dim LastRow, i, Col As Long 'Optimizing CPU speed Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual ' set the worksheet object Col = 25 Set Sht = Worksheets("Accounts source data") With Sht ' find last row with data in Column "Y" (Col = 25) LastRow = .Cells(.Rows.Count, 25).End(xlUp).Row For i = 3 To LastRow If .Cells(i, Col) = "In Scope" Then ' Set the range directly, no need to use `Select` and `Selection` Set RngS = .Cells(i, Col).Offset(, -22) ' Search, in same directory where the file is located, the file with that account (file comes with account number as name) sDir = Dir$(ThisWorkbook.Path & "\" & RngS.Value & ".xlsx", vbNormal) Set oWB = Workbooks.Open(ThisWorkbook.Path & "\" & sDir) oWB.Worksheets("Report").Range("B27:B30").Copy 'My error appears here: Run-time Error 424: Object required 'If I replace "Cells(i, Col).Offset(, -11)" from below with "Range("C10")" the code works perfectly. But this is not the desired result wbResults.Worksheets("Accounts source data").Cells(i, Col).Offset(, -11).PasteSpecial Paste:=xlPasteAll, Transpose:=True oWB.Close SaveChanges:=False ' clear objects Set RngS = Nothing Set oWB = Nothing End If Next i End With 'End optimizing CPU speed Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

只是一个快速修复。 尝试像这样:

ThisWorkbook.Worksheets("Accounts source data").Cells(i, Col).Offset(, -11).PasteSpecial Paste:=xlPasteAll, Transpose:=True

如果有效,请尝试将wbResults设置为ThisWorkbook ,如注释中所述。


您需要将wbResults设置为指定的工作簿,如注释中所述。 Set wbResults = ThisWorkbook是一个可能的方法来做到这一点。 此外,在VBA Dim a,b,c as Long将最后一个值设置为Long将另外两个设置为Variant