根据单元格值使用非法字符重命名工作簿中的特定标签

时间:2019-02-10 17:33:33

标签: excel vba

我有一个带有工作表的工作簿,但有一个名为“最终”的工作表,该工作表需要根据其中包含非法字符(例如“ CHEVROLET / ZZ”)的单元格值B2重命名。

下面尝试过代码,但是代码适用于所有工作表。

更改了所有工作表,而不是特定的工作表“最终”

Sub tabname()
    Dim ws As Worksheet

    For Each ws In Worksheets
        On Error Resume Next

        If Len(ws.Range("B2")) > 0 Then    
            ws.Name = ws.Range("B2").Value
        End If

        On Error GoTo 0

        If ws.Name <> ws.Range("B2").Value Then
            MsgBox ws.Name & " Was Not renamed, the suggested name was invalid"
        End If
    Next
End Sub

e,g“最终”工作表标签中B2单元格中的“ CHEVROLET / ZZ”。

只有sheettab“最终版”被重命名为“ CHEVROLET-ZZ”作为最终结果

1 个答案:

答案 0 :(得分:0)

我建议修整预期的名称,替换7个禁止使用的字符,并将其削减为最多31个字符:

Private Function NewTableName(ByRef IntendedName As String) As String
    Dim s As String
    s = Application.Trim(IntendedName)
    s = Replace(s, ":", "-")
    s = Replace(s, "\", "-")
    s = Replace(s, "/", "-")
    s = Replace(s, "?", "-")
    s = Replace(s, "*", "-")
    s = Replace(s, "[", "-")
    s = Replace(s, "]", "-")
    NewTableName = Left(s, 31)
End Function

最后:如果尝试使用已经存在的工作表名称重命名第二个工作表,则会出现错误。因此,您应该先检查其存在。