Excel 选择一个变量offset.resize.copy

Excel 选择一个变量offset.resize.copy,excel,vba,Excel,Vba,有人能告诉我下面的代码有什么问题吗 sub AVERAGE() Set dDate = Worksheets("Formula").Range("A1") Set rcell = Worksheets("Bond Status - Total Stats").Range("B5:NE5") _ .Find(What:=dDate, LookAt:=xlWhole, MatchCase:=False) If rcell Is Nothing Then Ms

有人能告诉我下面的代码有什么问题吗

sub AVERAGE()
   Set dDate = Worksheets("Formula").Range("A1")
   Set rcell = Worksheets("Bond Status - Total Stats").Range("B5:NE5") _
      .Find(What:=dDate, LookAt:=xlWhole, MatchCase:=False)
   If rcell Is Nothing Then
      MsgBox "Date " & dDate & " not found in Bond Status - Total Stats"
   Else
      rcell.Offset(1).Resize(-18, 15).Select.Copy 'this line is not working
      Worksheets("Formula").Range("F2:W2").PasteSpecial xlPasteValues 
   End If
End Sub
我试图做的是从WorksheetsFormula.RangeA1定义的日期开始,将一系列数据复制到左侧和下方的15行。我似乎无法通过考试。
注释的行不起作用。

我认为问题在于您试图调用范围的Select方法上的Copy方法。Select返回一个变量,该变量可能不会公开复制方法,即使运行时类型可能是一个范围

在复制之前,实际上不需要选择一个范围,如.Select.Copy

我想改变这一行:

rcell.Offset(1).Resize(-18, 15).Select.Copy

除非需要选择该范围。在这种情况下,您可以执行以下操作:

rcell.Offset(1).Resize(-18, 15).Select
Selection.Copy
另一个需要考虑的是,当做a。当您可能想要搜索日期或字符串值时,您正在尝试搜索范围对象的范围。编译器对此没有问题,因为Find方法的What参数需要一个变量。在方法的第一行:

Set dDate = Worksheets("Formula").Range("A1")
应改为将dDate设置为范围的值,而不是范围本身。像这样:

dDate = Worksheets("Formula").Range("A1").Value
希望这有帮助

dDate = Worksheets("Formula").Range("A1").Value