我希望你能帮忙。我在不同的工作表中有相同的表格(最多 12 个工作表),我希望能够在任一工作表中进行更改,并将其反映到所有其他工作表中(无需按 CTRL 并选择工作表)。我找到了一个 VBA,但仅适用于 2 个工作表之间的 1 个单元格,我无法将其应用于多个工作表中的表格。有人可以帮忙吗?
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "SHEET1" Or UCase(Sh.Name) = "SHEET2" Then
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1") = Target
Else
Sheets("Sheet1").Range("A1") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub
我也发现了其他解决方案但仍然无法满足我的需求:
是否有可能在两张不同的工作表中建立两个单元格之间的双向连接?
谢谢 :)
答案1
让我们用稍微不同的方式来表述这个问题:
让工作簿中任意一张工作表上的任何更改都使得所有其他工作表收到相同的更改。
在这种情况下,我们不需要分析已更改单元格的地址。我们只需将已更改工作表的内容转移到所有其他工作表:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oSheet As Worksheet
Dim oUsedRange As Range
Set oUsedRange = Sh.UsedRange
Application.EnableEvents = False
For Each oSheet In Sh.Parent.Worksheets
If oSheet.Name <> Sh.Name Then
oSheet.Range(oUsedRange.Address(False, False, xlA1, False)).Formula = oUsedRange.Formula
End If
Next oSheet
Application.EnableEvents = True
End Sub
当然,此代码仅复制单元格的内容 - 例如,格式或过滤选项或图像将不会被复制。