我分别在名为"Sheet1"和"Sheet2"的工作表中有两个名为 INPUT_A_1 和 INPUT_A_2 的单元格,我正在链接(更改一个单元格在另一个单元格中触发相同的更改)与下面的工作表非常有效:
在Sheet1中:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Address = Range("INPUT_A_1").Address) Then
Sheets("Sheet2").Range("INPUT_A_2") = Target.Value
End If
Application.EnableEvents = True
End Sub
并在Sheet2中:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Address = Range("INPUT_A_2").Address) Then
Sheets("Sheet1").Range("INPUT_A_1") = Target.Value
End If
Application.EnableEvents = True
End Sub
我的问题是,由于语法Sheets(sheetname).Range(rangename),如果我决定重命名其中一个或两个工作表,那么我必须相应地改变宏 . 是否有某种解决方法,不涉及通过相应的工作表名称召唤单元格?当我在不同的工作表中有3个或更多链接的单元格时,这个问题变得更加引人注目 .
谢谢
3 回答
"workaround"将使用工作表的codename代替
遵循Storax上面的优秀建议,这是我实施的修复:
在第一个工作表中(可以随意重命名):
在第二个工作表中(也可以随意重命名):
最后,在任何模块中:
SheetName和CodeName关联是根据:
如果有一个包含链接单元格的多个工作表,并且删除了任何工作表,则 On Error Resume Next 应该有效 .
实际上,可以使用Sheet Index代替,从而完全不需要 SheetFromCodeName 例程 .
在这种情况下,第一张和第二张中的语法将是
和