镜像单元:有意的循环引用

时间:2015-01-07 00:12:01

标签: excel vba excel-vba excel-formula

我想制作一张包含"镜像单元格的纸张。即我想要几个单元格显示相同的值,并且如果所有单元格中的值发生更改,则所有单元格中的值将更改。

例如:

Cell A1: "Apple"
Cell A2: "Apple"
Cell A3: "Apple"

如果我将A3更改为" Banana"我希望我的表单能够显示" Banana"在单元格A1,A2和A3中。我知道如果我设置A1 = A3和A2 = A3,我可以做到这一点。但是,我还希望能够将A1改为" Carrot"并且所有三个单元都显示" Carrot"。我不知道如何强制excel采用三个单元格的循环引用,其中可以通过寻址任何单元格来更改值。

P.S。 - 我所描述的是我希望行为如何出现"对于那些只是试图更新工作表的人。如果有人有编写可以自动处理此更新的VBA脚本的想法(即每次更改单元格值时可以自动调用并在幕后调用),我很乐意写一个并使用它,编写属于的单元格在每个循环引用的集合中直接进入脚本。

编辑:我实现了@silentsurfer提供的脚本,它在一个简单的电子表格上运行良好,其值为A1:A3。然后我实现了@pnuts建议的命名范围功能。

在我的工作表中,我选择了三个单元格(C3,C5,C7)并将它们设置为命名范围(" config3P")。我只是想让@ silentsurfer的脚本来监控这三个单元而不是A1:A3,所以这是改变的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c3P As Range
Dim xlCell As Range

Set c3P = Range("config3P")
Application.EnableEvents = False

If Not Intersect(Target, c3P) Is Nothing Then
    For Each xlCell In c3P
        xlCell.Value = Target.Value
    Next xlCell
End If

Application.EnableEvents = True

End Sub

1 个答案:

答案 0 :(得分:2)

尝试将其粘贴到VBA编辑器中的工作表代码页:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim chngRange As Range
    Dim xlCell As Range

    Set chngRange = Range("A1:A3")
    Application.EnableEvents = False

    If Not Intersect(Target, chngRange) Is Nothing Then
        For Each xlCell In chngRange
            xlCell.Value = Target.Value
        Next xlCell
    End If

    Application.EnableEvents = True

End Sub