
如何使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同一个工作簿下的两个工作表的“某一列值”双向的动态更新的话,我该怎么修改上述代码呢? 展开
”,你的回答是这样的:
用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同一个工作簿下的两个工作表的“某一列值”双向的动态更新的话,我该怎么修改上述代码呢? 展开
1个回答
展开全部
这段代码有点问题,叫做“自激”
表一更新 导致 表二更新 导致 表一更新 导致 表二更新 导致表一更新 .....
应该使用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)
两段中是一样的,要改必须一起改。
表一更新 导致 表二更新 导致 表一更新 导致 表二更新 导致表一更新 .....
应该使用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)
两段中是一样的,要改必须一起改。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询