Во первых спасибо авторам и сайта за возможность задать вопрос и шанс решить задачу, а пользователям за проявленный интерес.
Есть книга (прикрепленный файл) В нем лист "Список" И некое количество других листов.
Итак собственно проблема: 1) http://www.planetaexcel.ru/tip.php?aid=49 - полезный макрос! можно как-нить на его основе сделать макрос который бы в список добавлял Имя_листа и данные_из_ячейки(в моем случае из листа 1 данные ячейки "Имя") например
Список Имя лист Петр 1 Виктор 2
и т.д. 2) Есть некий лист "Бланк" при копировании его в ту-же книгу, что б новому листу() присваивался порядковый номер(если есть листы 1 2 3 4 то ему присваивался 5 а следующему 6 и т.д.). Пробовал смухлевать назвав лист не "Бланк" , а _, соответственно при копировании давалось имя _(2) и т.д. но реально не удобно.
3) Название листа "бралось" из данных ячейки в том-же листе, что-то по типу =ПСТР(ЯЧЕЙКА("filename";A1);НАЙТИ("]";ЯЧЕЙКА("filename";A1))+1;65535) только наоборот? например имя листу присваивалось из ячейки с "Поле с кодом".
Вот с добавлением листа. А по третьему пункту не понял: каким образом брать имя из ячейки листа, который ещё не создан? Если брать из копии, то значение в ячейке остаётся ведь неизменным.
Юрий, огромное спасибо, но не сочтите за грубость и наглость, могли б вы подробней расписать как написан макрос и что там к чему, в прикрепленном файле непосредственно книга с которой я работаю(калькуляционные карточки), собственно принцип работы такой же как как и в файле в первом листе. Нид хелп.
"каким образом брать имя из ячейки листа, который ещё не создан? Если брать из копии, то значение в ячейке остаётся ведь неизменным." - да, допустим, а)есть бланк в котором заполнена ячейка L4, б)при копировании(создании нового листа с помощью макроса, который Вы написали) создается лист с порядковым номером переменная=переменная+1 т.е. 1 2 3 4 и т.д.) при изменении дефолного значения в L4 в новом листе после сохранения, имя листа меняется на новое(только-что введенное).
Вообще Огромнейшее вам спасибо, 3й пункт вопроса созрел в процессе написания поста, под впечатлением формулы которая в ячейку выводит имя листа, и вот подумал а если наоборот=)
Очень нужна реализация "Новый лист с порядковым номером по-порядку" и "Список листов + данные из ячейки"(желательно с гиперссылкой на лист)
И еще, занимаюсь для себя пхп программированием и знаю паскаль, но макросы явно чет новое, может посоветуете литературу, бо разбирая и смотря на макросы не могу понять логику написания и процедуры (.
Файл написан в Офисе 07, сохранен в формате офис 97-03, отображение форматирования может хромать.
Сейчас убегаю, посмотрю вечером на работе (если будет такая возможность). Цитата: "Очень нужна реализация "Новый лист с порядковым номером по-порядку" и "Список листов + данные из ячейки" - а разве это не сделано?
Юрий, просмотрел более менее внимательно на код макроса, вроде понял (методом научного тыка разобрался что к чему), вопросы сняты, есть только один как реализовать гиперссылку на лист с помощью макроса, есть у меня 2а куска 1й Ваш -Список листов + данные из ячейки и 2й - http://www.planetaexcel.ru/tip.php?aid=49 а связать их один с другим никак не могу.
Юрий М, переделал немного Ваш макрос в соответствии с требованиями к последнему проекту, получилось вот что
Sub List() Dim i As Long Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(3, 1), Cells(LastRow + 1, 2)).ClearContents LastRow = 3 For i = 4 To Sheets.Count Cells(LastRow + 1, 1) = Sheets(i).Cells(5, 3) Cells(LastRow + 1, 2) = Sheets(i).Cells(25, 3) Cells(LastRow + 1, 3) = Sheets(i).Cells(26, 3) Cells(LastRow + 1, 4) = Sheets(i).Name LastRow = LastRow + 1 Next End Sub
ругается он на то, что у меня есть объединенные ячейки(какая ему наф разница какие там ячейки если мы задаем начальные параметры вставки данных, начиная с какой строки LastRow = 3)
Давайте определимся с задачей, а то я немного запутался. Итак, нужно: 1. По кнопке макрос создаёт копию листа "Бланк", присваивает ему номер (предыдущий + 1). Ячейке L4 этого листа присваеивается аналогичное значение. Так? 2. ... Теперь не знаю на какой лист собирать данные с других листов, и что это за данные? 3. ... С какой целью и с чем нужно связывать макрос, указанный по ссылке? Просто опишите задачу. 4. Куда должны вести гиперссылки и на каком листе они должны располагаться? Назначение гиперссылок - переключение на нужный лист? Не устроит ли в таком случае правый клик на значки навигации по листам (левее первого листа)?
1. По кнопке макрос создаёт копию листа "Бланк", присваивает ему номер (предыдущий + 1). Ячейке L4 этого листа присваеивается аналогичное значение. Так? Done (с етим разобрался, поковырялся в макросе) спасибо.
2. ... Теперь не знаю на какой лист собирать данные с других листов, и что это за данные? Done ( и с етим разобрался тоже) спасибо.
3. ... С какой целью и с чем нужно связывать макрос, указанный по ссылке? Просто опишите задачу.
Задача состоит в том, что б сформировать оглавление листов книги с сылками на них(на листы)
4. Куда должны вести гиперссылки и на каком листе они должны располагаться? Назначение гиперссылок - переключение на нужный лист? Не устроит ли в таком случае правый клик на значки навигации по листам (левее первого листа)?
Да, Юрий, переключение на нужный лист, собственно 3й и 4й пункты одинаковы. ---------------------------------------- Задача состоит в том что б на листе "Список" сделать оглавление листов книги с ссылками на лист. Грубо говоря рассматривая первый прикрепленный файл post_96129.xls что б при формировании оглавления
Имя Лист
Вася 1 Петя 2 Коля 3
Вася - ссылка на лист "1" Петя - на лист "2" Коля - на лист "3"
Надеюсь, я описал понятно, ибо постановка вопроса 50% решения проблемы.
Юрий, у меня вопрос, за что отвечает строчка Range(Cells(3, 1), Cells(LastRow + 1, 2)).ClearContents ятак понимаю Range(Cells(3, 1) - начальные координаты построения списка а Cells(LastRow + 1, 2)).ClearContents - ???
Или плохо читаю, или не вижу ответа на второй мой вопрос. Какие данные собирать на лист "Список"? По Вашему вопросу: строка Range(Cells(3, 1), Cells(LastRow + 1, 2)).ClearContents говорит о следующем: Диапазон с ячейки А3 по ячейку(№ последней строки+1, второй столбец) очистить содержимое.
{quote}{login=Юрий М}{date=03.02.2010 10:54}{thema=}{post}Или плохо читаю, или не вижу ответа на второй мой вопрос. Какие данные собирать на лист "Список"? {/post}{/quote} На лист "Список" собираем данные (post_96129.xls - первый) 1.с ячеек С2 их же делаем ссылкой на лист с которого взяли данные 2.с именем листа на котором брали данные
Ну как-бы оглавление в книге делаем с возможностью перехода на листы с помощью ссылки на последние(т.е. листы)
Да что же из Вас приходится всё тянуть силой? Если в первом Вашем файле были Васи и Пети, то здесь (во втором Вашем варианте) ЧТО брать? Из КАКИХ ячеек? Со столбцом D понятно - имена листов (1, 2, 3...). А столбцы А, В, С чем заполнять?
{quote}{login=Юрий М}{date=04.02.2010 01:42}{thema=}{post}Проверьте, если я правильно понял задачу.{/post}{/quote}
Еммм, все четко, но при "обновить список", он не обновляет данные, а дописывает к существующим, т.е если нажать 3 раза "Обновить список" там будет по 3 копии данных =) суть я уловил, завтра на работе поковыряю код, попробую сам исправить. Спасибо, за помощь.