更改另一个表的名称时,另一个更改

我正在为我公司的员工devise一个仪表板/统计数据,而且我的一个代码遇到了一些问题。 这是一个开始的背景

每个员工有两张不同的统计表。

第一张纸始终是可见的,并有一个macros将取消隐藏和激活第二张(使工作簿不会太难以pipe理)。当你点击第二张纸,我有一个macros将隐藏它(它使用workbook_Sheetdeactivateclosuresworkbook_Sheetdeactivate表,如果它具有与第二个工作表相关的属性)

公式"=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)"添加到单元格(在我的示例range("A62")) "=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)"

然后我把这个单元格等于第二个表格的range("A1") 。 我想要的是第二张纸的名称等于range("A1")和“成就”,以便第二张纸可以引用我的macros由第一张纸。 (例如:如果sheet1是“Bobby”,sheet2是“Bobby Achievements”)

编写macros本身并不麻烦,但我不知道哪个子程序最适合使用,以便在正确的时间激活macros。 有没有办法让macros在工作簿中更改工作表名称时运行?

代码如下:

 dim ws as worksheet 'Sorting through each sheet to find "Achievement Sheets" For Each ws in Workbook If ws.range("W1").Value = "Achievement Lists" Then ws.name = ws.Range("A1") & " Achievements" End if Next ws 

这可能有点粗糙,但您可以简单地使用第二个工作表对象上的“计算”事件来更新自己的名称。

 Private Sub Worksheet_Calculate() If Range("A1") & " Achievements" <> Me.Name Then Me.Name = Range("A1") & " Achievements" End If End Sub 

或者在工作簿对象中使用“SheetCalculate”事件:

 Private Sub Workbook_SheetCalculate(ByVal Sh As Object) On Error Resume Next If Sh.Range("W1").Value = "Achievement Lists" Then If Sh.Range("A1").Value & " Achievements" <> Sh.Name Then Sh.Name = Sh.Range("A1") & " Achievements" End If End If End Sub