镜像单元:故意循环引用
我想build立一个有“镜像单元格”的表格,也就是说,我想要几个单元格显示相同的值,如果在任何单元格中发生变化,那么这个值就会在所有单元格中改变。
例如:
Cell A1: "Apple" Cell A2: "Apple" Cell A3: "Apple"
如果我将A3更改为“香蕉”,我希望我的工作表在单元格A1,A2和A3中显示“香蕉”。 我知道,如果我设置A1 = A3和A2 = A3,我可以做到这一点。 不过,我想也有能力把A1改成“胡萝卜”,并且所有的三个单元都显示“胡萝卜”。 我不知道如何强制Excel取三组单元的循环引用,其中的值可以通过寻址任何单元来改变。
PS – 我所描述的是,我希望这种行为“出现”给那些只是试图更新工作表的人。 如果有人想写一个可以自动处理这个更新的VBA脚本的想法(也就是每次单元格值被改变的时候都可以自动调用),我很高兴写出一个并使用它,编程属于这个单元格的单元格在每个循环引用的集合中直接写入脚本。
编辑:我实现了@silentsurfer提供的脚本,它在A1:A3中的值很简单。 然后,我实现了@pnutsbuild议的命名范围function。
在我的工作表中,我select了三个单元格(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
尝试将其粘贴到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