Excel 复制for循环找到的范围并粘贴到另一张图纸上

Excel 复制for循环找到的范围并粘贴到另一张图纸上,excel,vba,Excel,Vba,我有一个宏,它接受输入并查找具有匹配名称的工作表。从那里,它循环遍历第一行(标题)以查找与第二个输入匹配的列 我想复制整列并粘贴到另一张纸上 当我运行代码时,它会一直工作到复制/粘贴到我得到的地方 运行时错误“1004”应用程序定义或对象定义错误 以评论的方式注意到 SDay = Sheets("Heat Map").Range("C1").Value STime = Sheets("Heat Map").Range("C2").Value Worksheets(SDay).Activate

我有一个宏,它接受输入并查找具有匹配名称的工作表。从那里,它循环遍历第一行(标题)以查找与第二个输入匹配的列

我想复制整列并粘贴到另一张纸上

当我运行代码时,它会一直工作到复制/粘贴到我得到的地方

运行时错误“1004”应用程序定义或对象定义错误

以评论的方式注意到

SDay = Sheets("Heat Map").Range("C1").Value
STime = Sheets("Heat Map").Range("C2").Value

Worksheets(SDay).Activate

For i = 2 To 17
    If ActiveSheet.Cells(1, i).Value = Sheets("Heat Map").Range("C2").Value Then
        ActiveSheet.Range(Cells(2, i), Cells(19, i)).Select ' Error is here
        Selection.Copy
    End If
Next i

Sheets("Heat Map").Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
  xlNone, SkipBlanks:=False, Transpose:=False

Sheets("Heat Map").Activate

这是一个常见的错误,但您不应该使用复制/粘贴或
激活
活动表
。这已经讨论了数千次。请查看此伟大的答案,了解如何避免:

主要原因是您现在从来没有想过“活动工作表”是什么。想象一下,如果由于某种原因无法激活该工作表,您将通过粘贴不应该粘贴的内容来破坏工作簿的其余部分。始终创建工作簿和工作表对象并使用它们

无论如何,尝试将一个范围指定给另一个范围。只需确保两个范围具有相同的尺寸(长度、宽度)。因此,不要复制然后粘贴,只需执行以下操作

Dim heatMap as Worksheet

Set heatMap = ThisWorkbook.Worksheets("Heat Map")
Set otherSheet = ThisWorkbook.Worksheets("Your other sheet")

otherSheet.Range(otherSheet.Cells(2, i), otherSheet.Cells(19, i))  = heatMap.Range(heatMap.Cells(2, i), heatMap.Cells(19, i))
我没有测试这段代码,所以如果它失败了,试着放慢速度,首先尝试复制单个单元格的范围(硬编码的行和列),然后从那里开始工作