Переименование вкладок с помощью макросов - PullRequest
0 голосов
/ 21 июня 2019

Я хочу переименовать вкладки в рабочей книге, чтобы при изменении цифр в определенной ячейке на первой вкладке имя вкладки автоматически менялось вместе с ней.

Мне не нужна кнопка, назначенная длямакрос (без необходимости).Пока мой код не был выполнен.Это мой оригинальный код, но названия вкладок при этом не меняются.

Private Sub Worksheet_Change(ByVal Target As Range)
'calls ChangeSheetName() in a regular code module to do the work
'when the contents of cell B1 on the sheet changes
  If Target.Address <> 1. & "$B$1" _
   Or Target = "" _
   Or Target.Cells.Count > 1 Then
    Exit Sub ' nothing to be done
  End If
 Run "ChangeSheetName" ' call the routine to do the work
End Sub

Если кто-то может помочь с этим, это было бы здорово!

Обновление: я пытался использоватьэтот код ниже, но он по-прежнему не меняет вкладку.Следует отметить, что ячейка, используемая для именования, находится на другой вкладке.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address(False, False) = " '0. Overview'!$B$3" Then
    On Error Resume Next
    Me.Name = Target.Value
    On Error GoTo 0
End If
End Sub

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Я предполагаю, что вы хотите изменить имя рабочего листа на то, что написано в ячейке B1. В этом случае вы можете использовать этот фрагмент кода вместо одного на каждом листе.

Проверка Typenname должна предотвращать любые ошибки, если диапазон не находится на рабочем листе.

В коде этой ThisWorkbook:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not TypeName(Target.Parent) = "Worksheet" Then Exit Sub
    If Target.Address = "$B$1" And Target.Value2 <> "" Then
        Target.Worksheet.Name = Target.Value2
    End If
End Sub
0 голосов
/ 21 июня 2019

Это может помочь, как только вы покинете вкладку sheet4, sheet1,2,3 изменятся

Private Sub Worksheet_Deactivate()
    Sheet1.Name = "North " & Sheet4.[E1] & " " & Sheet4.[F1]
    Sheet2.Name = "EAST SIDE " & Sheet4.[E1] & " " & Sheet4.[F1]
    Sheet3.Name = "WEST SIDE " & Sheet4.[E1] & " " & Sheet4.[F1]
End Sub
0 голосов
/ 21 июня 2019

Не так много, чтобы изменить:

Private Sub Worksheet_Change(ByVal Target As Range)

    'calls ChangeSheetName() in a regular code module to do the work
    'when the contents of cell B1 on the sheet changes
    If Target.Address <> "$B$1" Or Target.Value = "" Or Target.Cells.Count > 1 Then
         Exit Sub ' nothing to be done
    End If

    Call ChangeSheetName ' call the routine to do the work

End Sub

Но добавим, что вы можете изменить только убедиться, что если Target.Address равно $B$1, то выполнить вызов.

Private Sub Worksheet_Change(ByVal Target As Range)

    'calls ChangeSheetName() in a regular code module to do the work
    'when the contents of cell B1 on the sheet changes
    If Target.Address = "$B$1" And Target.Value <> "" Then
         Call ChangeSheetName ' call the routine to do the work
    End if

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