如何使EXCEL同一个工作簿下的两个工作表的“某一列值”双向的动态更新?谢谢!

曾有人向你提问“如何使EXCEL同一个工作簿下的两个工作表值双向的动态更新”,你的回答是这样的:用VBA代码:按ALT+F11调出VBA窗口,在左面的表1标签上双击,出现... 曾有人向你提问“如何使EXCEL同一个工作簿下的两个工作表值双向的动态更新
”,你的回答是这样的:

用VBA代码:按ALT+F11调出VBA窗口,在左面的表1标签上双击,出现表1的代码窗口,输入下面代码
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("表2").Range("e1") = Range("a1")
End Sub

再双击左面表2标签,出现表2代码窗口,输入下面代码
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("表1").Range("a1") = Range("e1")
End Sub

那么我想使EXCEL同一个工作簿下的两个工作表的“某一列值”双向的动态更新的话,我该怎么修改上述代码呢?
展开
 我来答
周海涛_bj
推荐于2021-02-03 · TA获得超过563个赞
知道小有建树答主
回答量:584
采纳率:0%
帮助的人:668万
展开全部
这段代码有点问题,叫做“自激”

表一更新 导致 表二更新 导致 表一更新 导致 表二更新 导致表一更新 .....
应该使用Application.EnableEvents = False

你要的代码如下:
Sheet1 中

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zRN As Range
Dim zS1 As Integer, zS2 As Integer
zS1 = 5 'SHEET1中同步的列(E)
zS2 = 3 'SHEET2中同步的列(C)
For Each zRN In Target
If zRN.Column = zS1 Then
Application.EnableEvents = False
Sheets("SHEET2").Cells(zRN.Row, zS2) = zRN
Application.EnableEvents = True
End If
Next
End Sub

Sheet2 中:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zRN As Range
Dim zS1 As Integer, zS2 As Integer
zS1 = 5 'SHEET1中同步的列(E)
zS2 = 3 'SHEET2中同步的列(C)
For Each zRN In Target
If zRN.Column = zS2 Then
Application.EnableEvents = False
Sheets("SHEET1").Cells(zRN.Row, zS1) = zRN
Application.EnableEvents = True
End If
Next
End Sub

注意
zS1 = 5 'SHEET1中同步的列(E)
zS2 = 3 'SHEET2中同步的列(C)
两段中是一样的,要改必须一起改。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式