Страницы: 1
RSS
Макрос на переименование листов по содержимому ячейки
 
Здравствуйте!
Подскажите, пожалуйста, макрос для такой задачи:
Нужна кнопка на листе1, по щелчку на которой переименовывались бы все листы книги, имя листа выбиралось бы исходя из значений в ячейке J7 каждого листа. Например, на листе2 в ячейке J7 стоит "2", значит, имя этого листа становится "2", а на листе3 в ячейке J7 стоит "3", значит имя этого листа становится "3"...
Очень надеюсь на помощь знатоков.
P.S. В принципе, можно и на событие изменения листа1 повесить... Если можно, помогите с обоими вариантами...
Изменено: flashertheone - 27.12.2016 16:25:57
 
Код
Sub Переименовать_листы()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 2 To Worksheets.Count
        Worksheets(i).Name = Worksheets(i).Range("J7").Value
    Next
    Application.ScreenUpdating = True
    MsgBox "Готово!", vbInformation
End Sub
Изменено: Karataev - 27.12.2016 16:50:18
 
Спасибо, то, что надо!
Еще бы на событие изменения ячеек A6-F500 в листе1 повесить, а там уж буду выбирать, какой макрос больше подойдет.
 
Цитата
flashertheone написал:
Еще бы на событие изменения ячеек A6-F500 в листе1
В модуль листа1:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A6:F500")) Is Nothing Then
        Call Переименовать_листы
    End If
End Sub


Цитата
flashertheone написал:
а там уж буду выбирать, какой макрос больше подойдет
А выбирать не из чего: макрос тот же самый ))
 
Добавил запуск макроса по событию. Сделал так, что макрос будет запускаться, если на листе 1 изменение произойдет в одной ячейке, а не в нескольких сразу.
Изменено: Karataev - 27.12.2016 16:50:05
 
Цитата
flashertheone написал:
Еще бы на событие изменения ячеек A6-F500 в листе1 повесить
Странная хотелка: контролируем большой диапазон - при изменении значенния в любой из этих ячеек будут вновь и вновь переименовываться листы, хотя значения в ячейках J7 на них, не меняется. В чём смысл многократно переписывать имена листов, если менять их не требуется?
 
Спасибо, все работает!)
 
Юрий М, а как можно оптимизировать?
Дело в том, что большой диапазон значений будет копироваться на лист1, как раз в А6-F500 (возможно, не всегда будет задействован полный диапазон, а допустим A6:F100). Этот диапазон чисел раскидывается по остальным листам определенными порциями в определенные таблицы. Остальные листы - сплошные формулы, там вручную ничего меняться не будет. Единственный момент - ячейки J7 на остальных листах изменяют свои значения, согласно формуле, в зависимости от величины скопированного диапазона чисел на лист1. И уже макрос переименовывает листы так, как задала формула в ячейке J7 каждого листа.
В принципе, многократно этот диапазон A6-F500 меняться не будет - ctrl+c, ctrl+v и забыл, грубо говоря. Но Вы правы, при каждом изменении этого диапазона, будут переименовываться все существующие листы...
Не знаю уж, понятно ли объяснил, попробую попроще...
Копируем числа с 1 до 50 на лист1 в контролируемый диапазон. В таблицу на листе2 с помощью ИНДЕКС+ПОИСКПОЗ возвратились значения с 1 по 10, на лист3 - с 11 по 20, на лист4 - с 21 по 30 и т.д. Имена листов должны соответствовать указанному в каждой таблице диапазону, то есть, лист1 переименовывается у нас в 1-10, лист 2 - в 11-20, лист3 - в 21-30 и т.д. Эти имена возвращает формула в ячейке j7 на каждом из листов + она не дает одинаковые названия листам, которые остались без изменений (иначе были бы все остальные листы с именем "0-0", а excel бы этого не простил =) ). В оригинале слегка посложнее все, но суть описал))
Изменено: flashertheone - 27.12.2016 18:12:09
 
Была мысль использовать событие в модуле книги Workbook_SheetChange, но выясняется, что значение в ячейках j7 меняется формулой (
Тогда уж лучше по необходимости кнопкой )
Впрочем, Вам там на месте виднее :-)
 
Вот про кнопку мне и пришла мысль с самого начала)
Спасибо за помощь!
 
а у меня такая проблема,в одной книге имеется столько листов сколько дней в месяце,я хочу чтобы листы переименовывались в даты месяца  и желательно на ярлычках листа выходные дни заливались красным цветом желательно.И так с каждым месяцем,я пишу график работ ежедневно,а вручную переименовывать занимает много времени.Помогите пожалуйста кто может.Спасибо за ранее
 
Цитата
Dovletmurat написал:
,я хочу чтобы листы переименовывались в даты месяца
Как макрос определит дату месяца листа?
Страницы: 1
Наверх