Создание листов excel автоматически

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Уважаемые специалисты!
Помогите, пожалуйста, с решением такой задачи.

В файле 2 листа:
— список клиентов;
— шаблон отчета.

Как только пользователь добавляет в список еще одного клиента — автоматически создается новый лист:
— Название клиента в списке клиентов становится ссылкой на соответствующий созданный лист.
— создаваемый лист = скопированный шаблон отчета.
— название создаваемого листа = название клиента.
— в создаваемый лист вставляются данные из списка клиентов.

Подскажите, как такое сделать?

Пример во вложении.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Я бы сделал

ТАК

. Зачем хранить одинаковые бланки, когда их можно формировать динамически  

Изменено: Sanja20.06.2015 20:28:39

Согласие есть продукт при полном непротивлении сторон.

 

CAHO

Пользователь

Сообщений: 2183
Регистрация: 25.02.2013

#3

20.06.2015 20:22:11

Тут я так понимаю всё равно надо создавать какую-то кнопочку для создания листа. Ибо если делать на добавление клиента, то это привязывается к режиму редактирования ячеек. А если человек допустит ошибку в клиенте и начнёт исправлять букву, лист опять создастся, уже с новым клиентом, хотя он тот же. И многие другие проблемки. Поэтому тут не просто создание листа и клиента, тут должен быть какой-то другой фактор влияющий на создание листа.
Думаю, что понятно объяснил суть проблемы.
Если просто сделать копию листа шаблона макросом, то можно так

Код
   Sheets("Шаблон отчета").Copy Before:=Sheets(1)
   Sheets(1).Name = "Клиент"

Изменено: CAHO20.06.2015 20:29:37

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

#4

20.06.2015 20:30:56

Цитата
Sanja написал: Я бы сделал ТАК. Зачем хранить одинаковые бланки, когда их можно формировать динамически

Мне немного не подходит. Мне именно нужно создание листа при каждом добавлении в список клиентов.

Цитата
CAHO написал: Тут я так понимаю всё равно надо создавать какую-то кнопочку для создания листа.

Наверное, Вы правы. тогда добавляется еще одна задача:
В список клиента внес — и автоматически в строке созданного клиента должна появиться кнопочка «Сформировать отчет»

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

#5

20.06.2015 20:34:22

Цитата
Константин написал: Как только пользователь добавляет в список еще одного клиента — автоматически создается новый лист:

Именно автоматически? Какой момент принять за создание новой записи — заполнены оба столбца? А если, как заметил САНО, при вводе данных произогшла ошибка и нужно подкорректировать запись немного — что тогда?

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#6

20.06.2015 20:37:55

Цитата
Константин написал: создание листа при каждом добавлении

тогда неизбежны

Цитата
CAHO написал: И многие другие проблемки

нужно продумать тщательнее.
ИМХО. Все равно не пойму зачем хранить в книге заполненные КАРТОЧКИ, храните все что относится к клиенту в общей базе и при необходимости формируйте карточки. ИМХО

Изменено: Sanja20.06.2015 21:04:57

Согласие есть продукт при полном непротивлении сторон.

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Ок, понял. Спасибо за советы. Действительно, решил пересмотреть подход к формированию карточек.

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Предлагаю по нажатию кнопки формировать карточку.

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Если всё же решите заводить каждому клиенту свой лист, то см. файл. Но возможны ошибки из-за имён листов…

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Юрий!
как всегда Вам огромное спасибо!!!

Я так и хочу решить!
Есть один момент. Создали «Петров», далее «Бымц!», лист Петров готов.
Проходит время, создаются «Сидоров» и «Фролов», но «Бымц!» протестует, говорит, что лист с таким именем уже существует (имеет ввиду Петрова). И есссно, листы Сидоров и Фролов не создаются.

Как лучше:
— отдельный «Бымц!» на каждую строку (но тогда она должна появляться напротив строки, где появился хот один символ в колонках B и С)
— один общий «Бымц!» на всю таблицу, но идет проверка на дублирование имен_клиентов/листов
?

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Не смог воспроизвести у себя подобную ошибку, когда создаётся лист с НОВОЙ фамилией. Уточните проблему.
P.S. Но сам подход не очень хороший: при большой клиентской базе будет куча листов…

 

Константин

Пользователь

Сообщений: 61
Регистрация: 26.04.2014

Юрий, пардон, действительно я ошибся.
Сначала поигрался, потом код посмотрел.
все ок, спасибо.

Но в целом я с Вами согласен, много листов выходит. Надо менять подход.

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

#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, я плачу.
Всегда восхищался людьми у кого больше навыков и знаний.
При этом сразу чувствуешь себя недоучем ((.

;D

Спасибо огромное. Будем развивать.


Доброго времени суток уважаемый _Boroda_
Столкнулся с такой же проблемой но не смог разобраться как решить мою задачю
Задача поставлена таким образом:
Нужно чтоб при добавлении текста в ячейку В КОНЕЦ КНИГИ был скопирован последний лист этой книги с названием указанным в ячейке
PS: я так понимаю открыв редактор VB я увижу ваш скрипт и смогу внедрить его в свой документ
Заранее Спасибо

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


выложил пример в нем попробовал подробней описать поставленную задачу

Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Огромное спасибо  :D это именно то что я хотел
+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


:D именно!!! то, что надо! выручили блондинку!  ::)


Товарищи, а как в макросе прописать, что каждый последующий лист будет копироваться не из предыдущего, как сейчас прописано, а из листа под названием «Шаблон». это реально?

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, для того чтобы открылся редактор макросов.

Нажмем в меню insertmodule, напишем модуль Sub ListTempl(), объявим переменную tmpName.

редактор VBA с кодом

Получим данные нашего списка из листа список в переменную 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 ключ для запуска этого кода, и новые листы были созданы после всех листов в текущей книге, см. снимок экрана:

документ создать несколько листов 1


стрелка синий правый пузырь Создайте несколько рабочих листов из списка значений ячеек с помощью Kutools for Excel

Если вы не знакомы с приведенным выше кодом, вот удобный инструмент:Kutools for Excel, С его Создать рабочие листы последовательностей , рабочие листы будут созданы на основе значений ячеек в новой книге.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Нажмите Кутулс Плюс > Рабочий лист > Создать рабочие листы последовательностей, см. снимок экрана:

2. В Создать рабочие листы последовательностей диалоговое окно:

(1.) Выберите один рабочий лист, на основе которого вы хотите создать рабочие листы последовательности;

(2.) Затем выберите Данные в варианте диапазона от Имена листов на основе список и щелкните документ создать несколько листов 4 кнопку, чтобы выбрать значения ячеек, которые вы хотите использовать.

документ создать несколько листов 3

3, Затем нажмите Ok , рабочие листы были созданы с именами значений ячеек в новой книге, см. снимок экрана:

документ создать несколько листов 5

Нажмите «Загрузить и получить бесплатную пробную версию». Kutools for Excel от Yhao сейчас!


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (16)


Оценок пока нет. Оцените первым!

Skip to content

Как добавить новый лист и присвоить имя

На чтение 2 мин. Просмотров 6.9k.

Что делает макрос: Самый простой вариант автоматизации — добавить новый лист с присвоением ему конкретного имени.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает макрос
  4. Как использовать

Как макрос работает

Если вы владеете минимальными знаниями английского, то поймете, как работает этот макрос без подсказок.

Код макроса

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. Вы знаете, что если присвоить новому листу имя, которое уже есть, то возникнет ошибка. Таким образом, на шаге 1, макрос говорит Excel немедленно перейти к строке, которая говорит MyError (на шаге 3), если есть ошибка.
  2. Для создания листа используем метод Add. По умолчанию, лист называется SheetХХ, где хх представляет число листа. Мы даем листу новое имя путем изменения свойства объекта ActiveSheet.Name в этом случае мы именуем рабочий лист «Отчёт и текущий год».
  3. Как и в рабочих книгах, каждый раз, когда вы добавляете новый лист с помощью VBA, он автоматически становится активным. Именно поэтому мы пишем ActiveSheet.Name.
  4. Обратите внимание, что на шаге 4 мы выходим из процедуры. Делаем так, чтобы он случайно не показал сообщение об ошибке.
  5. Данный шаг запускается, если имя нового листа совпадает с уже существующим в книге. С помощью сообщения уведомляем пользователя об этом. Опять же, этот шаг должен быть выполнен только в случае возникновения ошибки.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Понравилась статья? Поделить с друзьями:
  • Создание компаний в excel
  • Создание листа прогноза в excel
  • Создание коммерческого предложения в excel
  • Создание листа excel python
  • Создание комбинированных документов ms word