使用明确定义到其父工作表(如果需要,还可能是工作簿)的范围对象:
Dim copyRange as Range
Dim destRange as Range
Set copyRange = Sheets("Results").Range("D8") 'Or Workbooks("Book1").Sheets("SheetName").Range("D8")
Set destRange = Sheets("Other Sheet").Range("E8") 'Or Workbooks("Book2").Sheets("Another Sheet").Range("E8")
copyRange.copy
destRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
destRange.AutoFill destRange.Offset(-7, 0).Resize(8, 1), xlFillDefault
destRange.AutoFill destRange.Resize(36, 1), xlFillDefault
destRange.EntireColumn.Autofit
我不清楚您何时/是否在宏记录器会话期间更改了工作表,我也不清楚您正在做的各种选择/自动填充。如果您需要帮助弄清楚这些部分,请告诉我,我在上面进行了猜测。
这是您可能使用的另一种方法:
Dim copyRange as Range
Dim destRange as Range
Dim dt as Date
Set copyRange = Sheets("Results").Range("D8")
Set destRange = Sheets("Other Sheet").Range("E2")
dt = DateAdd("d", -6, DateValue(copyRange.Value)) 'get the value 6 days before
copyRange.Copy destRange 'copy the formatting/etc
destRange.Value = dt 'insert the value
destRange.AutoFill destRange.Resize(44, 1), xlFillDefault
destRange.EntireColumn.Autofit