Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как сменить название ярлыка листа - щелчком по ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как сменить название ярлыка листа - щелчком по ячейке
Dalm Дата: Пятница, 02.08.2024, 09:38 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 92
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Здравствуйте.
Помогите разобраться с задачей.

На каждом листе - есть диапазон G4:V5 - с текстом.
Как сменить название ярлыка листа - на тот тот текст, который записан в ячейку по которой кликнули ?

(Событие рабочего листа - одинарный клик мышкой по ячейке из диапазона G4:V5 )
К сообщению приложен файл: fajl2.xlsm (20.9 Kb)
 
Ответить
СообщениеЗдравствуйте.
Помогите разобраться с задачей.

На каждом листе - есть диапазон G4:V5 - с текстом.
Как сменить название ярлыка листа - на тот тот текст, который записан в ячейку по которой кликнули ?

(Событие рабочего листа - одинарный клик мышкой по ячейке из диапазона G4:V5 )

Автор - Dalm
Дата добавления - 02.08.2024 в 09:38
MikeVol Дата: Пятница, 02.08.2024, 11:12 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 81 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Dalm, Доброго времени суток. Возможно кто лучше вам напишит код. Как вариант, приведённый ниже код вставьте в Модуль ЭтаКнига (ThisWorkbook): [vba]
Код
Option Explicit

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    If Not Intersect(Target, Sh.Range("G4:V5")) Is Nothing Then

        If Target.Value <> "" Then

            ' Проверка на длину имени и недопустимые символы
            If Len(Target.Value) <= 31 And InStr(Target.Value, ":") = 0 And InStr(Target.Value, "\") = 0 Then
                Sh.Name = Target.Value

                If Err.Number <> 0 Then
                    MsgBox "Не удалось переименовать лист. Возможно, лист с таким именем уже существует или имя недопустимо.", vbExclamation
                    Err.Clear
                End If

            Else
                MsgBox "Имя листа не должно быть пустым, содержать недопустимые символы и быть длиной не более 31 символа.", vbExclamation
            End If

        End If

    End If

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    If Not Intersect(Target, Sh.Range("G2:R2")) Is Nothing Then

        With Sh.Tab
            .Color = Target.Interior.Color
            .TintAndShade = 0
        End With

    End If

End Sub
[/vba] Да, ещё. Остальной код что есть у вас в Модулях Листов Удалите, весь! ЯЯ переписал его, теперь код один и срабатывает для всех Листов. Удачи.


Ученик.
Одесса - Украина
 
Ответить
СообщениеDalm, Доброго времени суток. Возможно кто лучше вам напишит код. Как вариант, приведённый ниже код вставьте в Модуль ЭтаКнига (ThisWorkbook): [vba]
Код
Option Explicit

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    If Not Intersect(Target, Sh.Range("G4:V5")) Is Nothing Then

        If Target.Value <> "" Then

            ' Проверка на длину имени и недопустимые символы
            If Len(Target.Value) <= 31 And InStr(Target.Value, ":") = 0 And InStr(Target.Value, "\") = 0 Then
                Sh.Name = Target.Value

                If Err.Number <> 0 Then
                    MsgBox "Не удалось переименовать лист. Возможно, лист с таким именем уже существует или имя недопустимо.", vbExclamation
                    Err.Clear
                End If

            Else
                MsgBox "Имя листа не должно быть пустым, содержать недопустимые символы и быть длиной не более 31 символа.", vbExclamation
            End If

        End If

    End If

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    If Not Intersect(Target, Sh.Range("G2:R2")) Is Nothing Then

        With Sh.Tab
            .Color = Target.Interior.Color
            .TintAndShade = 0
        End With

    End If

End Sub
[/vba] Да, ещё. Остальной код что есть у вас в Модулях Листов Удалите, весь! ЯЯ переписал его, теперь код один и срабатывает для всех Листов. Удачи.

Автор - MikeVol
Дата добавления - 02.08.2024 в 11:12
Dalm Дата: Пятница, 02.08.2024, 11:38 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 92
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
MikeVol, спасибо
 
Ответить
СообщениеMikeVol, спасибо

Автор - Dalm
Дата добавления - 02.08.2024 в 11:38
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!