Переименовать конкретную вкладку в книге на основе значения ячейки с недопустимым символом - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть рабочая тетрадь с листами, но есть специальный лист с именем "final", который необходимо переименовать в лист на основе значения ячейки B2, в котором есть недопустимый символ e, g "CHEVROLET / ZZ"

Пробовалкод ниже, но код для всех листов.

изменил все листы вместо конкретного листа "final"

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 в "final"табуляция листа.

только лист табуляции "финал" для переименования в "CHEVROLET-ZZ" в качестве окончательных результатов

1 Ответ

0 голосов
/ 10 февраля 2019

Я предлагаю обрезать предполагаемое имя, заменить 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

Наконец: вы получаете сообщение об ошибке, если вы пытаетесь переименовать секундулист с именем уже существующего листа.Поэтому вы должны проверить его существование раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...