【问题标题】:Rename specific tab in a workbook based on cell value with illegal character根据具有非法字符的单元格值重命名工作簿中的特定选项卡
【发布时间】:2019-02-11 15:28:41
【问题描述】:

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

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

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

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 “CHEVROLET/ZZ”在“最终”工作表选项卡的单元格 B2 中。

只有 sheettab "final" 被重命名为 "CHEVROLET-ZZ" 作为最终结果

【问题讨论】:

  • 这是您希望看到的唯一非法字符还是可以改变?
  • 唯一的字符是“\”或“/”

标签: excel vba


【解决方案1】:

我建议修剪预期的名称,替换 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

最后:如果您尝试使用已经存在的工作表名称重命名第二个工作表,则会出现错误。所以你应该在之前检查它的存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多