修改Excel工作表名称(CodeName)并不简单

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/taller_2000/article/details/80152884

在Excel中修改工作表名称有什么可讲的,在工作表标签上点右键,选择重命名就可以了,恭喜你答对了一半。

另一半呢?除了这个名称外,工作表还有另外一个名称——CodeName,想修改这个名字就没那么简单了。一个工作表竟然有两个名字,这不是添乱吗!?
先看看CodeName在哪里,既然叫做CodeName,肯定和Coding相关了,打开VBE窗口。

工作表名称 工作表CodeName
ShtName Sheet1
MySht Sheet2
Sheet3 Sheet3

默认情况下,Excel创建的工作表,其名称和CodeName是一致的,如截图中的Sheet3,为了方便使用,大家经常会修改工作表名称,这时其CodeName并不改变,如截图中的另外两个工作表。
在VBE的属性窗口中第一栏“(名称)”是工作表的CodeName,大家可以在这个地方修改它;“Name”栏是Excel界面中看到的工作表名称。如何在代码中修改CodeName该如何处理呢?

Sub ChangeCodeName()
    Const SHT_NAME = "MySht"
    Dim strNewCodeName As String
    Dim strOldCodeName As String
    strOldCodeName = Sheets(SHT_NAME).CodeName
    On Error Resume Next
    ' DEMO1
    strNewCodeName = "Sheet1"
    ThisWorkbook.VBProject.VBComponents(strOldCodeName).Name = strNewCodeName
    If Err = 0 Then
        MsgBox "你要指定的CodeName已经存在", , "DEMO 1"
    Else
        MsgBox "指定的CodeName(" & strNewCodeName & ")已经存在", , "DEMO 1"
    End If
    ' DEMO2
    Err.Clear
    strNewCodeName = "SheetNew"
    ThisWorkbook.VBProject.VBComponents(strOldCodeName).Name = strNewCodeName
    If Err = 0 Then
        MsgBox "工作表(" & SHT_NAME & ")的CodeName改为:" & strNewCodeName, , "DEMO 2"
    Else
        MsgBox "指定的CodeName(" & strNewCodeName & ")已经存在", , "DEMO 2"
    End If
End Sub

此时,需要借助VBProject.VBComponents来处理,如果该CodeName已经存在,将产生运行时错误。运行代码,结果如下:

猜你喜欢

转载自blog.csdn.net/taller_2000/article/details/80152884