移动源数据时excel更改公式 - 锁定并保护工作表不工作

时间:2014-06-06 16:51:35

标签: excel vba excel-vba locking protected

我有这个电子表格,其中包含一个母版页面和一个用于报告的每周页面。每周页面应该从主表单中拉出前5列数据的范围。

问题是,当我运行宏来添加新列(向右移位数据并在左侧创建一个新列)时,我的所有公式都会更改为跟随刚刚向右移动的数据。

Ex:每周工作表上的数据设置为一个公式,该公式从主工作表上的D2读取值。当我在主表单上添加新列时,即使我使用$ E $ 2,也会更改为E2。

我该怎么做才能防止这种情况发生?

这是使用安装了Service Pack 1的Office 2013。

这是用于移动数据的代码:

ActiveWindow.SmallScroll Down:=30
Range("A43:A62").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-66
Range("D2").Select
Selection.Insert Shift:=xlToRight
Range("D2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[1]+7"
Range("D2").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

1 个答案:

答案 0 :(得分:0)

我不知道如何在插入像这样的单元格时保持引用移位。因此,我知道保持主表单引用单元格D2的唯一方法是在将单元格添加到每周报表后使用宏重新输入主表单上的公式。

尝试这样的事情:

Dim ws As Worksheet
Dim ms As Worksheet

Set ws = Worksheets("Weekly Report")
Set ms = Worksheets("Master Report")

'Your other code goes here

ms.Range("A1") = "=" & ws.Name & "$D$2"

这假定A1是主工作表上引用D2的单元格。