Страницы: 1
RSS
Изменение даты в ячейке с автоматическим переименованием названия листа
 
Добрый день! Помогите пожалуйста в следующем, надо чтобы лист переименовывался с из ячейки этого же листа. Т.е книга содержит 31 лист, это 31 день. В ячейках каждого листа даты. Сделать так, чтоб переименовал дату в ячейке и переименовалось название листа под дату в ячейке. Файл выложить не могу, весит более 100 кб.
 
По какому событию переименовывать?

Хранить в отдельном листе данные одного дня в большинстве случаев неправильно.
 
На каждом листе данные одного дня (приход, расход, остаток материала). Да, есть связь между листами, это ссылка в ячейках остатков с предыдущего дня, также меняется дата (дата предыдущего дня +1).
Конечно можно было бы один раз переименовать листы в ручную и забыть(01.01.16; 02.01.16....31.01.16), но дело в том, что мой отчетный период к примеру с 26.02.16-25.03.16, т.е дни между месяцами выпадают(когда 31 день, а когда 28 или 30). Когда я вбиваю дату в первом листе, в остальных дата меняется, это просто, а как сделать чтоб менялись и названия листов?
 
Вставьте код в модуль первого листа. При изменении значения в ячейке A1 первого (в модуле которого будет этот код) листа все листы будут переименованы на значение ячейки A1 соответствующего листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [A1]) Is Nothing And Target.Count = 1 Then
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        For Each Sh In Worksheets
            Sh.Name = Sh.Range("A1").Text
        Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End If
End Sub
Изменено: Sanja - 04.05.2016 10:47:11
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Rinus написал: есть связь между листами, это ссылка в ячейках
Данные правильнее хранить в одной таблице.
 
Цитата
vikttur написал: По какому событию переименовывать?
Извините, я не понял ваш вопрос.
 
Я Вам написал макрос, который переименовывает листы, при возникновения события изменения значения в ячейке A1 первого листа.
vikttur, имел ввиду при возникновении какого события (их достаточно много в Excel) Вам нужно переименовывать листы? Или может присвоить макрос какой нибудь кнопке на листе? Или просто запускать его при нажатии определенного сочетания клавиш?
Для общего развития
Согласие есть продукт при полном непротивлении сторон
 
Неплохо бы проверять, есть ли уже лист с таким именем: можем ведь получить ошибку )
 
Sanja, олучилось, все работает! Спасибки большие! ))). Чтоб я без вас делал? Спасибо планете EXCEL! Да уж, чем больше изучаешь, тем больше понимаешь, что ни чего не понимаешь. EXCEL- целая наука )
 
Rinus, кнопка цитирования не для ответа!!!
 
А если требуется переименовать лист в текстовое значение? В имя менеджера, например. Модуль с датой в данном случае не работает.
Изменено: tigor - 24.09.2019 12:40:17
 
Всё работает: поменяйте на втором и третьем листах плюс на амперсанд,
Цитата
tigor написал:
требуется переименовать лист в текстовое значение
Имя листа всегда текст ))
 
Доброй ночи! Помогите, пожалуйста, - можно ли макрос из #6 приспособить для переименования по следующему принципу - если в "умной" таблице на листе есть колонка "EC_CLASS_NAME", то лист переименовывается в значение из второй строки этой ячейки?
Или по имени таблицы на листе.
На каждом листе всегда одна таблица, имена таблиц не повторяются.

Желаемый результат по примеру - "лист 4" переименовывается в "ADJUSTABLE_SUPPORT", "лист 5" - в "ANGLE_GUIDE".
 
Вопрос не по теме
Страницы: 1
Наверх