Excel 保留图纸宏以链接更改图纸名称的单元格
在分别名为“Sheet1”和“Sheet2”的工作表中,我有两个名为INPUT_A_1和INPUT_A_2的单元格,我正在链接(更改一个单元格会触发另一个单元格中相同的更改)与下列工作非常好的工作表宏: 第1页:Excel 保留图纸宏以链接更改图纸名称的单元格,excel,worksheet,vba,Excel,Worksheet,Vba,在分别名为“Sheet1”和“Sheet2”的工作表中,我有两个名为INPUT_A_1和INPUT_A_2的单元格,我正在链接(更改一个单元格会触发另一个单元格中相同的更改)与下列工作非常好的工作表宏: 第1页: Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If (Target.Address = Range("INPUT_A_1").Address) Then
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
第二张:
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
我的问题是,由于语法表(sheetname).Range(rangename),如果我决定重命名其中一个或两个工作表,那么我必须相应地修改宏。是否有某种解决方法不涉及按相应工作表名称调用单元格?当我在不同的工作表中有3个或3个以上的链接单元格时,这个问题显然变得更加突出
谢谢解决方法是使用工作表的
使用工作表的代码名
访问工作表的最佳方法是使用代码名。
每个工作表都有一个工作表名和一个代码名。图纸名称是
Excel中工作表选项卡中显示的名称
更改图纸名称不会更改代码名称,这意味着
通过代码名引用图纸是一个好主意
根据上面Storax的优秀建议,下面是我实施的修复: 在第一个工作表中(可随意重命名): 在第二张工作表中(也可以随意重命名): 最后,在任何模块中:
Public Function SheetFromCodeName(CodeName$) As Worksheet
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If sh.CodeName = CodeName Then
Set SheetFromCodeName = sh
Exit For
End If
Next sh
End Function
SheetName和CodeName关联依据:
如果有多张带有链接单元格的工作表,并且删除了其中任何一张工作表,则“下一步出错恢复”应能正常工作。事实上,可以使用工作表索引,从而完全避免使用SheetFromCodeName例程 第一页和第二页中的语法是
Worksheets(2).Range("INPUT_A_2") = Target.Value
及
明亮的谢谢工作得很有魅力!我从来没有改变过一个代号,也不打算改变,所以这是理想的。如果我出于任何原因删除了一份工作表,那么接下来一份简单的错误简历应该会起作用。
Public Function SheetFromCodeName(CodeName$) As Worksheet
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If sh.CodeName = CodeName Then
Set SheetFromCodeName = sh
Exit For
End If
Next sh
End Function
Worksheets(2).Range("INPUT_A_2") = Target.Value
Worksheets(1).Range("INPUT_A_1") = Target.Value