Страницы: 1
RSS
Автоматический вывод списка листов и данных из ячейки +
 
Во первых спасибо авторам и сайта за возможность задать вопрос и шанс решить задачу, а пользователям за проявленный интерес.  
 
Есть книга (прикрепленный файл)  
В нем лист "Список"  
И некое количество других листов.  
 
Итак собственно проблема:  
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:41}{thema=}{post}  
 
Юрий, у меня вопрос, за что отвечает строчка    
Range(Cells(3, 1), Cells(LastRow + 1, 2)).ClearContents  
ятак понимаю Range(Cells(3, 1) - начальные координаты построения списка  
а  Cells(LastRow + 1, 2)).ClearContents  - ???  
 
Спасибо.{/post}{/quote}  
 
Пока Юры нет,    
 
Range(Cells(3, 1), Cells(LastRow + 1, 2)) - это диапазон ячеек    
Cells(3, 1) - начало  
Cells(LastRow + 1, 2) конец.    
.ClearContents - метод для диапазона (очистить содержимое).    
 
Выделив любое слово в VB редакторе, не бойтесь нажать F1.
 
Пока набирал ответ, Юрий пришел )))
 
{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 копии данных =) суть я уловил, завтра на работе поковыряю код, попробую сам исправить.  
Спасибо, за помощь.
 
Да - я только что заметил, что забыл добавить очистку. Минуту.
 
В макросе SheetList После строки:  
LastRow = Cells(Rows.Count, 1).End(xlUp).Row  
добавьте две вот таких:  
Range(Cells(3, 1), Cells(LastRow + 1, 4)).ClearContents  
LastRow = 2
 
Спасибо, удачи Вам.
Страницы: 1
Читают тему
Наверх