在两个不同的工作表中构造一对镜像单元

时间:2014-11-05 10:53:30

标签: excel excel-vba vba

我正在尝试在工作簿的两个不同工作表上创建一对单元格,这样您进入一个单元格的任何内容都会被复制到另一个单元格中。如果这是一种方式,那显然是微不足道的。我想这样做,以便链接是双向的。这将涉及VBA脚本,我在这方面是一个新手。有没有人对如何学习我需要知道的东西有一些指示?我有谷歌搜索,但这只是产生了一些没有解释的代码示例,我不想输入我不理解的代码。

2 个答案:

答案 0 :(得分:1)

假设你有Sheet1和Sheet2,他们的名字就是那个。

  1. 在Sheet1中,转到开发人员并单击“查看代码”。您应该查看Sheet1的空白编码表
  2. 在编码区域的左下角,选择工作表而不是默认(常规)
  3. 在右侧下拉。选择更改。您将自动获得以下内容:
  4. Private Sub Worksheet_Change(ByVal Target As Range)
    
    End Sub
    

    对Sheet1中任何单元格的更改将触发上面的代码。

    已更改的单元格称为“目标”范围。

    您可以使用Target.Address和Target.Value轻松识别目标范围的地址和内容。然后,您可以使用此地址和值来更新Sheet2。

    Private Sub Worksheet_Change(ByVal Target As Range)
    
         ThisWorkbook.Sheets("Sheet2").Range(Target.Address).Value = Target.Value
    
    End Sub
    

    要将数据从Sheet2复制到Sheet1,只需重复上述步骤,但在Sheet2。

    Private Sub Worksheet_Change(ByVal Target As Range)
    
         ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value
    
    End Sub
    

    但是,如果更改为Sheet1将触发对Sheet2的更改,而Sheet2将触发对Sheet1的更改,则更改将无限期地发生,这是没有意义的。因此,只有当Sheet1和Sheet2上的值不同时,我们才需要添加一些代码来应用更改。如果值相同,则无需应用更改。因此,Sheet2的代码应如下所示:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
         If ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value <> Target.Value Then
    
            ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value
    
         End If
    
    End Sub
    

答案 1 :(得分:0)

您可以使用一对事件宏来完成此操作。以下是您可以调整的示例:

mirror changes