VBA实战技巧13: 同步多工作表指定区域的数据

2021-01-06 11:49:32 浏览数 (2)

很多情形下,我们希望同时在几个工作表中输入同样的数据。我们知道,将工作表组合能够方便地实现数据的同时输入。然而,如果忘记解除工作表组合,则可能误输入不想在所有工作表中都输入的数据。

我们可以使用VBA来解决这样的问题。当输入单元格处于想要输入的数据同时出现在所有组合工作表中时,则组合工作表并实现同时输入,否则解除工作表组合,防止误输入。

打开VBE,双击作为输入数据的工作表名称,打开代码窗口,输入代码:

代码语言:javascript复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)    If Not Intersect(Range("SameData"), Target) Is Nothing Then       '用于输入数据的活动工作表必须放置在第一个位置        Sheets(Array("Sheet2","Sheet1", "Sheet3")).Select    Else        Me.Select    End IfEnd Sub

代码中,SameData是工作表单元格区域的名称,代表要输入数据且这些数据会同步到其它组合工作表中的单元格区域,示例中为工作表Sheet2中的单元格区域B2:E7。注意,在Array函数中,第一个工作表应该是用于输入数据的活动工作表。

代码的运行效果如下图1所示。

图1

可以看到,在工作表Sheet2的单元格区域B2:E7中输入的数据将同步输入到工作表Sheet1和Sheet3中相应的单元格区域,而在此区域以外输入的数据则只存在于工作表Sheet2中。

如果你想将工作表Sheet2中输入的数据同步到工作表Sheet1和Sheet3的不同单元格区域中,可以将上述代码修改为:

代码语言:javascript复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)    If Not Intersect(Range("SameData"), Target) Is Nothing Then        With Range("SameData")            .Copy Destination:=Sheets("Sheet1").Range("B1")            .Copy Destination:=Sheets("Sheet3").Range("D5")        End With    End IfEnd Sub

0 人点赞