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

时间:2015-09-15 21:01:25

标签: excel vba excel-vba

我正在为我公司的员工制作仪表板/统计数据,并且我的一个代码遇到了一些打嗝。这里有一些启动背景

每位员工都有2张不同的统计数据表。

第一张纸始终可见,并且有一个宏将取消隐藏并激活第二张纸(因此工作簿不会太难以管理。)当您单击第二张纸时,我有一个宏这将隐藏它(如果它具有与第二张相关的属性,则使用workbook_Sheetdeactivate关闭工作表)

第一张工作表的标签名称已添加到单元格(在我的情况下为range("A62"))),其公式为"=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)"

然后我在第二张纸上使该单元格等于range("A1")。我想要的是第二张的名称等于range("A1")& "成就",以便第一张可以在我的宏中引用第二张。 (例如:如果sheet1是" Bobby&#34 ;, sheet2是" Bobby成就")

我自己编写宏时没有遇到任何问题,但我不知道哪个子版本最适合使用,以便在正确的时间激活宏。有没有办法在工作簿中更改工作表时运行宏?

以下是代码:

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

1 个答案:

答案 0 :(得分:0)

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

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

或使用工作簿对象中的&#39; 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