excel - 检测工作表的重命名或删除

标签 excel vba worksheet

有没有办法检测用户何时

  • 重命名,或
  • 删除工作表?

  • 如果发生这些事件之一,我想运行一些代码。

    我试过的

    我的工具使用了很多事件处理程序,所以我想到的一件事是在每个 Worksheet_Change 期间循环遍历所有工作表名称。 ,但我认为这不是最好的方法。

    最佳答案

    这种方法属于 ThisWorkbook模块。

    Public shArray1 As Variant
    Public shArray2 As Variant
    
    Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Dim lngCnt As Long
    Dim strMsg As String
    Dim strSht
    Dim vErr
    Dim strOut As String
    
    'get all sheet names efficiently in a 1D array
    ActiveWorkbook.Names.Add "shtNames", "=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND(""]"",GET.WORKBOOK(1)))"
    shArray2 = Application.Transpose([INDEX(shtNames,)])
    strSht = Application.Transpose(Application.Index(shArray2, , 1))
    
    'exit here if first time code is run
    If IsEmpty(shArray1) Then
        shArray1 = shArray2
        Exit Sub
    End If
    
    `check each sheet name still exists as is  
    For lngCnt = 1 To UBound(shArray1)
       vErr = Application.Match(shArray1(lngCnt, 1), strSht, 0)
       If IsError(vErr) Then
            strOut = strOut & shArray1(lngCnt, 1) & vbNewLine
            vErr = Empty
      End If
    Next
    
    shArray1 = Application.Transpose([INDEX(shtNames,)])
    
    If Len(strOut) > 0 Then MsgBox strOut, vbCritical, "These sheets are gone or renamed"
    
    End Sub
    

    关于excel - 检测工作表的重命名或删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705871/

    相关文章:

    excel - 更改工作表代号运行时错误 9 : Subscript out of range

    python - 使用百分号向 panda 数据框添加百分比列

    python - 有没有办法删除 Excel 中的无效字符?

    c# - NPOI 文件损坏

    vba - Excel 中的 VBA 函数可以返回范围吗?

    python - 如何使用 Python 将变量的值赋给 Excel 单元格

    excel - 计算以特定数字开头的出现次数(本福德定律)

    sql - dlookup 多个表并将文本框设置为结果 Access 2007

    excel - 如何为一张索引表中的每个工作表创建一个超链接?

    variables - Snowflake使用变量来设置数据库和架构