从一个工作表复制到另一个:应用程序或对象定义错误



我正试图从不同的工作表中复制以填写摘要表。

我得到

"应用程序或对象定义错误";

Sub jtest()
'For j = 3 To Rows.Count (will loop later once I make sure one iteration works)
    j = 3     
      
    Atext = Cells(j, "A").Text
    
    Worksheets(Atext).Range("U6").Copy Destination:=Worksheets("Summary 2").Range(j, "C")
    Worksheets(Atext).Range("X6").Copy Destination:=Worksheets("Summary 2").Range(j, "D")
    Worksheets(Atext).Range("Z6").Copy Destination:=Worksheets("Summary 2").Range(j, "F")
    Worksheets(Atext).Range("V7").Copy Destination:=Worksheets("Summary 2").Range(j, "G")
      
'Next j
End Sub

首先,我建议将Option Explicit添加到最顶部,这样您就必须声明变量。其次,粘贴时使用Range()不正确。把它改成Cells(),你就可以出发了!

Sub jtest()
Dim j&, Atext$, lastRow&
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
lastRow = Worksheets("Sheet1").Cells(Sheet("Sheet1").Rows.Count,1).End(xlUp).Row ' CHANGE THAT WORKSHEET AS NECESSARY. I'm also assuming your Column A has the most data.
For j = 3 To lastRow    
    Atext = Worksheets("Sheet1").Cells(j, "A").Text    ' CHANGE THAT WORKSHEET AS NECESSARY
    Worksheets("Summary 2").Cells(j, "C").Value = Worksheets(Atext).Range("U6").Value
    Worksheets("Summary 2").Cells(j, "D").Value = Worksheets(Atext).Range("X6").Value
    Worksheets("Summary 2").Cells(j, "F").Value = Worksheets(Atext).Range("Z6").Value
    Worksheets("Summary 2").Cells(j, "G").Value = Worksheets(Atext).Range("V7").Value
Next j
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

我把你的想法修改了一下。我创建了一个lastRow变量,假设"Sheet1"列a的数据最多(根据需要进行编辑),而不是循环超过200000次(如果使用Rows.Count会发生这种情况)。我还刚刚将范围的值设置为相等,这会跳过剪贴板,而且速度会快一点。请注意,这只会保留值,如果您需要格式,请切换回.Copy Destination:= ...,但将Range(j, "C")更改为Cells(j, "C")

创建引用单元格的范围对象,而不是以这种方式引用单元格。使用上面答案给出的例子:

dim row as range, summaryRow as range, sh as worksheet
set sh = activeworkbook.sheets("Summary 2")
for each row in sh.usedrange.rows 'I prefer to use "usedrange"

当您在行或列中循环时,无论您要执行什么操作,都要将正在使用的行设置为行范围,与汇总行相同,然后将一个复制到另一个。

row.cells(column).copy summaryRow 

相关内容

最新更新