运行副本+粘贴宏时,VBA绝对公式范围会发生变化

时间:2012-12-06 19:00:42

标签: excel vba excel-vba excel-2007

我正在运行一个复制粘贴宏,但是当我运行它时,它会不断将我的公式范围更改为最后一行。

例如,我原来的VLOOKUP公式来自$D$2:$G$5000,但是当我运行我的宏时,它会将其更改为$D$2:$G$1254,其中1254是数据所在的最后一行。

这是复制+粘贴功能:

Sub START1()

Dim shCurrentWeek As Worksheet
Dim shPriorWeek As Worksheet
Dim lr As Long

Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week")
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week")
lr = shCurrentWeek.Range("A" & Rows.Count).End(xlUp).Row

'Copies Current Week into Prior Week and deletes Rows in Prior week

shCurrentWeek.Range("A4:X" & lr).Copy
shPriorWeek.Range("A2").PasteSpecial xlPasteValues
shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete

End Sub

任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用INDIRECT()功能,以便公式始终引用您想要的行。这是一个简单的例子(请参阅this link以获取更详细的信息):

=SUM(INDIRECT("A1:A6"))

答案 1 :(得分:0)

首先,您使用的是粘贴值,因此您不会在第二页上获得任何公式,但错误在于代码的最后一行

shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete

由于您的公式与您删除excel的范围重叠,因此会自动调整vlookup公式。

我建议在粘贴值之前删除您的数据。

*如果公式已经在页面上,则在阅读评论后进行编辑,然后此解决方案将无效,我会根据tim的建议使用clearcontents。