分享

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

 hercules028 2020-12-27

excelperfect

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

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

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

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的不同单元格区域中,可以将上述代码修改为:

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多