VBA:将单元格镜像到另一张工作表,然后删除原始文件后保留数据

时间:2018-07-27 12:14:42

标签: excel vba excel-vba

很抱歉,如果已回答此问题,但我之前未找到有关此问题的任何详细信息。我知道这是一个没有代码的模糊问题,但只是在寻找有关如何实现此目标的想法。在Excel上编写VBA代码。

我有一个工作表,其中包含20多个列和8,000多个数据行。该工作表受密码保护/只读,因为我不希望用户编辑数据(工作表已链接到其他几个宏)。称为“主数据表”。

我创建了一个宏,该宏将过滤主数据表,然后将过滤后的结果粘贴到另一张纸上(称为“过滤结果”),并将数据与另一张单独的纸相结合。用户可以查看和编辑此工作表。

但是,我希望用户放入两列数据,这些数据需要在主数据表中自动复制/镜像(在那些特定的列中)。我遇到的问题是,经过一段时间后,“过滤的结果”表会被删除,但是我仍然需要这些特定列的用户输入数据才能在主数据表中显示。

我不确定如何解决删除工作表但保留数据的问题。

我可以选择的另一种解决方法是复制/粘贴按钮,用户可以单击该按钮将未格式化的数据从“筛选表”复制到“主数据表”。但是,我希望找到一种解决方案,该解决方案会随着用户的输入而自动更新(以防他们忘记单击按钮等)。

感谢所有帮助!

编辑:我正在使用的代码。虽然仍然停留在链接过滤的单元格上。

Private Sub Worksheet_Change(ByVal Target As Range)

  Application.EnableEvents=False

    If Not Intersect (Target, Range("D1:D1000")) Is Nothing Then
          Target.Copy Destination:=Worksheets("Master Data 
          File").Range(Target.Address)
    End If

  Application.EnableEvents=True

End Sub

1 个答案:

答案 0 :(得分:0)

您可以使用Worksheet_Change事件检查特定范围是否更改,然后复制/更新另一张纸。这样,您可以在原始数据更改时自动进行复制/粘贴。

示例:
如果您想在每次更改值时将范围A1:A5复制到另一个工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A5")) Is Nothing Then 'range A1:A5 was changed
        Target.Copy Destination:=Worksheets("OtherSheet").Range(Target.Address)
    End If
End Sub