前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实战技巧13: 同步多工作表指定区域的数据

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

作者头像
fanjy
发布2021-01-06 11:49:32
1.6K0
发布2021-01-06 11:49:32
举报
文章被收录于专栏:完美Excel

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

我们可以使用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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档