在 Excel 中连接多张工作表以双向更新

在 Excel 中连接多张工作表以双向更新

我希望你能帮忙。我在不同的工作表中有相同的表格(最多 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

当然,此代码仅复制单元格的内容 - 例如,格式或过滤选项或图像将不会被复制。

相关内容