Страницы: 1
RSS
Переименовать название листа из ячейки., Переименовать название листа из ячейки.
 
Добрый день!

Нашел макрос у вас
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A2:A4"), Target) Is Nothing Then
    For Each iCell In Target
        Sheets(iCell.Row).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Row))
    Next
End If
End Sub

Он рабочий но у меня задача чуть сложнее.
Нужно чтобы имя листов бралось из ячеек

Например из листа 2 диапазон ячеек F10:O10 имя бы подставлялось в нужный лист
F10 - лист 5
G10 - лист 6
H10 - лист 7
и так далее.....

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

Заранее благодарен за помощь!
Изменено: lil000 - 12.01.2019 11:30:45
 
Цитата
lil000 написал:
чтобы имена нужных листов брались из горизонтального диапазона ячеек.
По какому принципу? И где файл-пример?

В общем по нужному диапазону пустите цикл вместо Target.
Код
For Each iCell in Sheets(2).[F10:O10]'измените на нужный диапазон
Изменено: Anchoret - 12.01.2019 10:41:25
 
Если меняю диапазон то имя из этого диапазона подставляется в одном лист. Видимо этого недостаточно.

Файл приложил.
Изменено: lil000 - 12.01.2019 11:35:00
 
Цитата
lil000 написал:
брались из горизонтального диапазона ячеек.
И где в файле этот горизонтальный диапазон?
Первоначальный макрос модуля листа, в котором при изменении в определенном диапазоне ячеек производятся некие действия.
И тот-же вопрос - по какому принципу макрос должен забирать данные из этот "горизонтального диапазона"? Опрос ранее указанного диапазона на лсите с индесом 2? Изменяемые листы  начиная с индекса 5 и далее?
 
Цитата
Anchoret написал:
И где в файле этот горизонтальный диапазон?
В файле нет этого диапазона, я как раз и не знаю как прописать.

Нужно чтобы из 2 листа
из ячейки F10 подставлялось имя листа - лист 5
G10 - лист 6
H10 - лист 7
и так далее.....
Изменено: lil000 - 12.01.2019 11:51:59
 
Цитата
lil000 написал:
Другими словами нужно чтобы имена нужных листов брались из горизонтального диапазона ячеек
Так замените iCell.Row на iCell.Column. Нет? Иначе и будет всегда только один лист переименовываться, т.к. для диапазона F10:O10 iCell.Row всегда будет одинаковая.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
я знаком с этой задачей (решалась уже)
в данном случае нужен точный код решающий задачу, рекомендации (советы) как решить - не помогут
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Кросс
 
Всем большое спасибо за помощь все заработало

Код такой
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G9:V9"), Target) Is Nothing Then
   For Each iCell In Range("G9:V9")
   Sheets(iCell.Column).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", iCell.Column))
    Next
End If
End Sub


Остался маленький вопрос:
Подскажите пожалуйста как поменять номер листа с которого начинается переименование.

Сейчас идет с 7 листа, то есть номер столбца и номер листа совпадает G=7.
Если мне нужно чтобы имя листа стояло в G9 а переименовывался 3 лист. Что нужно для этого?
Изменено: lil000 - 15.01.2019 13:19:18
 
Доброго времени суток!

А как не из списка переименовать,
А из ячейки на каждом листе?
Листов много более 100.

Спасибо
 
Кажется нашёл решение:Переименование листа Excel с содержимым ячейки с помощью макроса

Код
Sub RenameSheet()

Dim rs As Worksheet

For Each rs In Sheets
rs.Name = rs.Range("B5")
Next rs

End Sub
Только поменял ячйку.

Переименовал первый лист и выскочила ошибка в строке:
Код
rs.Name = rs.Range("B5")
Я думаю, на примере имена по вертикали, а у меня ячейка одна и таже...
Не врублюсь что подправить...
Страницы: 1
Наверх