在一张纸上复制静态范围,然后根据单元格中的单个值将其粘贴到另一张纸上的dynamic范围内

我有三个部分来解决这个问题。 我在Sheet1!A1中有一个单元格。 我在Sheet1!B1:F1中需要复制一个静态范围。 然后,我需要粘贴在一个dynamic范围的Sheet2偏移的行数周数。 这是我为一张我经常使用的纸张写的一个更大的macros的一部分,但我似乎有这些部分。 我可能是简单化或简单化,但这是我目前的。

Sub CopyPaste() Sheets(1).Range("B1:F1").Copy OffsetRange = Sheets(1).Cells(1,1).Value Sheets(2).Cells(1+OffsetRange,1).Paste End Sub 

当我运行这个,它要么给我一个运行时错误9或运行时错误438。

任何人都知道是什么造成这些错误? 当我粘贴范围时,当我粘贴到位置时,单元格对象是否指向复制范围的第一个单元格?

试试看,

 Option Explicit Sub CopyPasteOffset() Dim OffsetRange As Long OffsetRange = Worksheets(1).Cells(1, 1).Value Worksheets(1).Range("B1:F1").Copy _ Destination:=Worksheets(2).Cells(1 + OffsetRange, 1) End Sub 

.Paste方法是Worksheet的成员,而不是Range或Cells。 您可能会将它与.PasteSpecial混淆,它是Range对象的成员。 无论如何,作为目的地可以直接应用于复制命令是不必要的。