Константин Пользователь Сообщений: 61 |
Уважаемые специалисты! В файле 2 листа: Как только пользователь добавляет в список еще одного клиента — автоматически создается новый лист: Подскажите, как такое сделать? Пример во вложении. |
Sanja Пользователь Сообщений: 14838 |
Я бы сделал ТАК . Зачем хранить одинаковые бланки, когда их можно формировать динамически Изменено: Sanja — 20.06.2015 20:28:39 Согласие есть продукт при полном непротивлении сторон. |
CAHO Пользователь Сообщений: 2183 |
#3 20.06.2015 20:22:11 Тут я так понимаю всё равно надо создавать какую-то кнопочку для создания листа. Ибо если делать на добавление клиента, то это привязывается к режиму редактирования ячеек. А если человек допустит ошибку в клиенте и начнёт исправлять букву, лист опять создастся, уже с новым клиентом, хотя он тот же. И многие другие проблемки. Поэтому тут не просто создание листа и клиента, тут должен быть какой-то другой фактор влияющий на создание листа.
Изменено: CAHO — 20.06.2015 20:29:37 Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. |
||
Константин Пользователь Сообщений: 61 |
#4 20.06.2015 20:30:56
Мне немного не подходит. Мне именно нужно создание листа при каждом добавлении в список клиентов.
Наверное, Вы правы. тогда добавляется еще одна задача: |
||||
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#5 20.06.2015 20:34:22
Именно автоматически? Какой момент принять за создание новой записи — заполнены оба столбца? А если, как заметил САНО, при вводе данных произогшла ошибка и нужно подкорректировать запись немного — что тогда? |
||
Sanja Пользователь Сообщений: 14838 |
#6 20.06.2015 20:37:55
тогда неизбежны
нужно продумать тщательнее. Изменено: Sanja — 20.06.2015 21:04:57 Согласие есть продукт при полном непротивлении сторон. |
||||
Константин Пользователь Сообщений: 61 |
Ок, понял. Спасибо за советы. Действительно, решил пересмотреть подход к формированию карточек. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Предлагаю по нажатию кнопки формировать карточку. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Если всё же решите заводить каждому клиенту свой лист, то см. файл. Но возможны ошибки из-за имён листов… |
Константин Пользователь Сообщений: 61 |
Юрий! Я так и хочу решить! Как лучше: |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Не смог воспроизвести у себя подобную ошибку, когда создаётся лист с НОВОЙ фамилией. Уточните проблему. |
Константин Пользователь Сообщений: 61 |
Юрий, пардон, действительно я ошибся. Но в целом я с Вами согласен, много листов выходит. Надо менять подход. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#13 21.06.2015 00:08:22 Вариант: добавлять записи в базу, а если нужна карточка — выводить по запросу (поиску) данные в лист «Шаблон». |
Коллеги.
1. Прошу подсказать существует ли у Экселя возможности создавать автоматически листы в книге?
Например, в ячейках A1-A5 первого листа записаны 5 значений
«имя первого листа»……. «имя пятого листа»
и есть 5 листов с такими названиями листов
если добавляем в ячеку A6 значение «имя шестого листа», то автоматически создаётся ещё один лист с указанным названием.
2. Обратная задача.
В ячейках стоит формула, которая определяет имена листов и подставляет в соответствующую ячейку определённое имя.
Заранее благодарен.
Так?
В из_ячеек_в_листы.xls в Лист1 столбец А нужно ввести корректный для имени листа текст
В из_листов_в_ячейки.xls нужно вставить новый лист или изменить название старого и посмотреть на Лист1
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Цитата: _Boroda_ от 17.02.2010, 01:53
Так?
В из_ячеек_в_листы.xls в Лист1 столбец А нужно ввести корректный для имени листа текст
В из_листов_в_ячейки.xls нужно вставить новый лист или изменить название старого и посмотреть на Лист1
А мне понравилось. Подскажет ли уважаемый _Boroda_ как генерировать новые листы с уже готовым форматированием.
Т.е. я создал некий бланк, и при вводе значений на листе файла «из_ячеек_в_листы.xls» создаётся новый лист (это _Boroda_ уже осуществил)
с уже готовым бланком
_Boroda_, Огромное спасибо.
Собственно говоря кzld озвучил мой основной вопрос.
Задача стоит такая:
При наступлении события
происходит добавление нового знчения в файл с первичной информацией,
и по формуле ссылающейся на ячейки с данной информацией и растянутой по первому столбцу
создаётся новый лист с преднастроенным шаблоном.
Событие может быть — новый месяц, новый сотрудник, новая роль, новые материалы к изучению …
Задача на самом деле чуть больше. В прилагаемом файле краткое описание. Также часть задачи (по нахождению максимума) размещаю дополнительно в отдельной теме чтобы проще было искать.
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Boroda, я плачу.
Всегда восхищался людьми у кого больше навыков и знаний.
При этом сразу чувствуешь себя недоучем ((.
Спасибо огромное. Будем развивать.
Доброго времени суток уважаемый _Boroda_
Столкнулся с такой же проблемой но не смог разобраться как решить мою задачю
Задача поставлена таким образом:
Нужно чтоб при добавлении текста в ячейку В КОНЕЦ КНИГИ был скопирован последний лист этой книги с названием указанным в ячейке
PS: я так понимаю открыв редактор VB я увижу ваш скрипт и смогу внедрить его в свой документ
Заранее Спасибо
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.
выложил пример в нем попробовал подробней описать поставленную задачу
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Огромное спасибо это именно то что я хотел
+1
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.
Dobryi den’, uvajaemyi _Boroda_
Vo pervyh, izvinite za transliteratsiyu…. u menya klava ne russkaya, a v slepuyu ya pechatat’ ne umeyu.
vo vtoryh, hotelos’ by obratit’sya k vam za pomosch’yu… Vy horosho osvetili temu avtomaticheskogo sozdaniya listov v Excele iz dannyh v tablitse… Ya popytalsya ispol’zovat’ fail s gotovym makrosom, no eto kak stavit’ podvesku ot Jiguley na BMW, a samomu mne, kak cheloveku dalekomu ot VBA otredaktirovat’ kod -delo nemuslennoe.
Vy ne mogli by vstavit’ makros v predlojennyi fail, kotoryi budet sozdavat’ listy v kontse kniki s imenem po znacheniyu yacheiki pervogo stolbtsa stranitsy «Main» s formatom i shapkoi tablitsy, no ne dannymi v tablise iz imeyuchegosya uje lista?
izvinite za naglost’ i bespokoistvo, pojaluysta.
Artem
Вопрос: а если таблица должна быть определенного размера и я скопировала формулу на остальные ячейки, и естественно, у меня отображается в ячейках «#ССЫЛКА!». можно ли каким-то образом сделать так, что бы в ячейках отображалось или значение или ничего?!
Заранее спасибо!
Можно.
условным форматированием
формулой если(еошибка(…);»»;…)
другой формулой
макросом
…
Но совсем что-то не понятно, а какое отношение это все имеет к теме «Автоматическое создание листов книги»?
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
ну как бэ, вроде как, работаю с фалом из этой темы ) ну хорошо, как перенести в новую тему?
))
условным форматированием пробовала — ничего не получилось. не пойму как выставить условие о не верной ссылке.
получилось через формулу!!! Вы гений!
условное_форматирование
выделяем диапазон, УФ, формула =ЕОШИБКА(B2), формат — белый текст
формула БЕЗ ЗНАКОВ $
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
А теперь вопрос по теме: как сделать так, что бы при добавлении нового месяца, не только с вновь созданного листа можно было вернуться на главную страницу, но и в столбце «А», нажав на нужный мне месяц, я попадала на соответствующий лист? Т.е. при автоматическом создании нового листа в столбце «А» при нажатии на месяц переходит на соответствующий лист сразу, без дополнительных ручных манипуляций и создания гиперссылок. Просто это сильно облегчит работу, если в книге более 20-70 листов!
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
именно!!! то, что надо! выручили блондинку!
Товарищи, а как в макросе прописать, что каждый последующий лист будет копироваться не из предыдущего, как сейчас прописано, а из листа под названием «Шаблон». это реально?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo A
r_ = Range(«a» & Cells.Rows.Count).End(xlUp).Row
If Target.Row = r_ And Range(«a» & r_) <> «» Then
n_ = Format(Range(«a» & r_), «MMMM YYYY»)
s_ = ThisWorkbook.Sheets.Count
Sheets(s_).Copy After:=Sheets(s_)
Sheets(s_ + 1).Name = n_
End If
Exit Sub
A: MsgBox «Ïðîâåðü, íåò ëè ëèñòà ñ òàêèì èìåíåì.»
End Sub
вместо
Sheets(s_).Copy After:=Sheets(s_)
нужно
Sheets(«Шаблон»).Copy After:=Sheets(s_)
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Замечательные примеры. Коллеги а подскажите пожалуйста по этой же теме, как можно реализовать следующее:
1. На листе «Список» при написании в ячейке А2 «Фамилия Имя» (например — Иванов Иван) создается новый лист на базе имеющегос «Шаблона» с именем, но с именем Иванов И, т.е. Фамилия и первая буква имени, а если уже такое сочетание имеется, то Фамилия и первые две буквы имени (например — Иванов Иг)
2. Сама ячейка А2 где «Фамилия Имя» должна стать гиперссылкой на созданный лист.
3. А в созданом листе Иванов И в ячейке А1 прописывается его «Фамилия Имя» (Иванов Иван).
Много из этого уже имеется в ранее выложенных примерах, но вот хотелось бы и в таком виде, а мозг не доходит. Если не сложно, можно в макросе давать короткое описание некоторых командных строк, за что они отвечают….
Заранее ОГРОМНЕЙШЕЕ все спасибо.
Коллеги, очень нужна ваша помощь…
я только, что попробовала ввести Иванов Иван Иванович и с таким же именем у меня создался лист.
Действительно имя листа соответствует введеному в ячейке имени… а возможно так так указано выше…
Сегодня я покажу, как заполнить однотипные листы, по шаблону Excel на основе списка.
Переименуем в книге первый лист, это у нас будет список, допустим сотрудников.
Второй лист назовём шаблон, в нем будет находиться таблица, которую сотрудники будут заполнять либо вы будите заполнять для данных сотрудников из списка.
Вот такая будет табличка, потом покажу вам одну формулу в ячейке, как имя листа поместить в ячейку.
Вот список из трех сотрудников, три фамилии они у нас уникальные, отличаются друг от друга это важное условие для работы данного способа заполнения.
Сохраним наш документ как книга Excel с поддержкой макросов с расширением так xlsm, на ленте должен находиться в последнем пункте — пункт Разработчик, если его нет, то в файл, параметры нужно будет в настройках ленты добавить этот пункт, отметьте его галочкой.
В пункте Разработчик, выбираем вкладку Вставить, выбираем кнопку, рисуем кнопку, пока не создаем и не присваиваем никакой макрос. По нажатию кнопки будет формироваться набор листов в книге по списку.
Перейдём на вкладке Разработчик в Visual Basic либо нажмем Alt+F11
, для того чтобы открылся редактор макросов.
Нажмем в меню insert
– module, напишем модуль Sub ListTempl()
, объявим переменную tmpName.
Получим данные нашего списка из листа список в переменную tmpName, объявив диапазон А1:А3. Но если нужно будет больше, то будем менять это значение. Пока в примере оставим так.
Напишем цикл for от 1 до 3, по сколько мы знаем конечное количество записей нашего списка и теперь сделаем копию листа шаблон, создадим новый лист копии листа с шаблоном, шаблон и присвоим имя каждому листу, значение то которое у нас находится в списке. Закончим цикл next i
.
Теперь нажмем правой кнопкой на кнопке, назначить макрос, выберем макрос ListTempl
, OK, сохранить.
Нажмем на кнопку, сформировались три листа с название по списку сотрудников, которые были в списке. И можно будет заполнять или печатать.
Sub ListTempl() Dim tmpName tmpName = Sheets("Шаблон").Range("a1:a3") For i = 1 To 3 Sheets("Шаблон").Copy Before:=Sheets(i) Sheets(i).Name = tmpName(i, 1) Next i End Sub
Вот такой простой код позволяет быстро создать и заполнить книгу листами по определенным данным.
Если нажать на кнопку повторно, то Excel выдаст ошибку, что подобные листы уже используется, надо учитывать этот момент, просто удалите дубли, в этом примере я не буду делать повторную проверку или добавление каких-то случайных значений к имени листов.
Давайте добавим теперь в шапку шаблона формулу, которая будет в ячейку присваивать имя листа, сейчас формула находится на листе с названием шаблон.
Эта формула позволяет получить из значение листа имя листа в ячейку, происходит разбор пути файла до листа.
=ПРОПНАЧ(ПСТР(ЯЧЕЙКА("имяфайла";A1);ПОИСК("]";ЯЧЕЙКА("имяфайла";A1))+1;99))
Давайте допишет для примера как это бывает в таблицах, «Список для », а далее будет фамилия поставляться из названия листа.
Нажмем на кнопку, и как видите, сформировались все листы, и в каждом листе, в этой ячейки у нас будет находиться имя сотрудника.
Ну либо того, что у вас будет находилась в списке, при условии, что эти значения уникальны.
Если же всё-таки вам нужно будет сделать два листа для одной уникальной записи, тут могу предложить следующее.
Изменим в коде диапазон на А4
, так как у нас ещё один пункт добавился и в цикле исправим на четыре.
Sub ListTempl() Dim tmpName tmpName = Sheets("Шаблон").Range("a1:a4") For i = 1 To 4 Sheets("Шаблон").Copy Before:=Sheets(i) Sheets(i).Name = tmpName(i, 1) Next i End Sub
Удалим всё снова и нажмем на кнопку. Опять ошибка, как вариант предлагаю добавить пробел в конце названия дублируемого пункта списка.
В итоге у нас получилось два Ивановых, конечно лучше использовать уникальные значения, тогда этот пример будет достаточно хорошо вам подходить.
Смотрите видео: Листы в Excel из списка по шаблону
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Как создать несколько листов из списка значений ячеек?
Есть ли какие-нибудь быстрые или простые методы для создания нескольких рабочих листов на основе списка значений ячеек в Excel? В этой статье я расскажу о некоторых хороших приемах для решения этой задачи.
Создайте несколько листов из списка значений ячеек с кодом VBA
Создайте несколько рабочих листов из списка значений ячеек с помощью Kutools for Excel
Создайте несколько листов из списка значений ячеек с кодом VBA
Чтобы быстро создать несколько новых листов, названных списком значений ячеек, вам может помочь следующий код VBA.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: создание нескольких листов из списка ячеек:
Sub AddSheets()
'Updateby Extendoffice
Dim xRg As Excel.Range
Dim wSh As Excel.Worksheet
Dim wBk As Excel.Workbook
Set wSh = ActiveSheet
Set wBk = ActiveWorkbook
Application.ScreenUpdating = False
For Each xRg In wSh.Range("A1:A7")
With wBk
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = xRg.Value
If Err.Number = 1004 Then
Debug.Print xRg.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
Next xRg
Application.ScreenUpdating = True
End Sub
Внимание: В приведенном выше коде A1: A7 — это диапазон ячеек, на основе которого вы хотите создать листы, измените его по своему усмотрению.
3, Затем нажмите F5 ключ для запуска этого кода, и новые листы были созданы после всех листов в текущей книге, см. снимок экрана:
Создайте несколько рабочих листов из списка значений ячеек с помощью Kutools for Excel
Если вы не знакомы с приведенным выше кодом, вот удобный инструмент:Kutools for Excel, С его Создать рабочие листы последовательностей , рабочие листы будут созданы на основе значений ячеек в новой книге.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс Плюс > Рабочий лист > Создать рабочие листы последовательностей, см. снимок экрана:
2. В Создать рабочие листы последовательностей диалоговое окно:
(1.) Выберите один рабочий лист, на основе которого вы хотите создать рабочие листы последовательности;
(2.) Затем выберите Данные в варианте диапазона от Имена листов на основе список и щелкните кнопку, чтобы выбрать значения ячеек, которые вы хотите использовать.
3, Затем нажмите Ok , рабочие листы были созданы с именами значений ячеек в новой книге, см. снимок экрана:
Нажмите «Загрузить и получить бесплатную пробную версию». Kutools for Excel от Yhao сейчас!
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (16)
Оценок пока нет. Оцените первым!
Skip to content
Как добавить новый лист и присвоить имя
На чтение 2 мин. Просмотров 6.9k.
Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.
Содержание
- Как макрос работает
- Код макроса
- Как работает макрос
- Как использовать
Как макрос работает
Если вы владеете минимальными знаниями английского, то поймете, как работает этот макрос без подсказок.
Код макроса
Sub DobavitNoviiList() 'Шаг 1: Говорим Excel, что делать, если ошибка On Error GoTo MyError 'Шаг 2: Добавляем лист Sheets.Add 'Шаг 3: Присваиваем имя ActiveSheet.Name = "Отчет"_ WorksheetFunction.Text(Now(),"yyyy") 'Шаг 4: Выходим Exit Sub 'Шаг 5: Если произошла ошибка, сообщение пользователю MyError: MsgBox "Лист с таким именем уже есть!" End Sub
Как работает макрос
- Вы знаете, что если присвоить новому листу имя, которое уже есть, то возникнет ошибка. Таким образом, на шаге 1, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
- Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
- Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
- Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
- Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.