Vba добавить лист с именем: Как добавить новый лист и присвоить имя в Excel пошаговое руководство
Содержание
Лист переименования VBA — voxt.ru
Переименование листов в Excel выполняется на панели задач под рабочими листами, двойным щелчком по ним, но в VBA мы используем метод свойств Sheets или Worksheet для переименования листа, синтаксис для переименования листа в VBA выглядит следующим образом Sheets (« Имя старого листа»).Name = «Имя нового листа».
Переименовать лист в Excel VBA
Мы все выполнили эту задачу по переименованию рабочего листа в соответствии с нашей личностью или в соответствии с нашим удобством, не так ли? Переименование — это не высшая математика, но если вы кодер VBA, то вы должны знать эту задачу переименования рабочего листа. Поскольку мы работаем с рабочими листами, используя их имена, важно знать важность имен рабочих листов в Кодирование VBAКодирование VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. читать далее. В этой статье мы покажем вам, как переименовать лист с помощью кода Excel VBA.
Как переименовать лист в VBA?
Изменение имени рабочего листа не требует каких-либо специальных навыков. Нам просто нужно указать, какое имя листа мы меняем, введя существующее имя листа.
Например, если мы хотим переименовать лист с именем «Лист 1», нам нужно вызвать лист по его имени, используя объект «Рабочий лист».
Worksheets(“Sheet1”)
После упоминания имени листа нам нужно выбрать свойство «Имя», чтобы переименовать имя листа.
Worksheets(“Sheet1”).Name
Теперь нам нужно установить свойство Name на имя в соответствии с нашим желанием.
Worksheets(“Sheet1”).Name = “New Name”
Таким образом, мы можем переименовать имя рабочего листа в VBAИмя рабочего листа в VBAЧтобы назвать рабочий лист, просто введите существующее имя листа и укажите, какое имя листа вы меняете. Например, если вы хотите изменить лист с именем «Продажи», вы должны использовать объект Worksheet для вызова листа по его имени. читать далее с помощью свойства Имя.
В следующих разделах статьи мы покажем вам все больше и больше примеров изменения или переименования рабочего листа.
Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой
Например:
Источник: Лист переименования VBA (wallstreetmojo.com)
Примеры переименования рабочих листов в Excel VBA
Ниже приведены примеры листа переименования VBA.
Вы можете скачать этот шаблон листа переименования VBA здесь — Шаблон листа переименования VBA
Пример № 1. Измените или переименуйте лист с помощью переменных VBA.
Например, посмотрите на приведенный ниже пример кода.
Код:
Sub Rename_Example1() Dim Ws As Worksheet Set Ws = Worksheets("Sheet1") Ws.Name = "New Sheet" End Sub
В приведенном выше коде сначала я объявил переменную как Worksheet.
Dim Ws As Worksheet
Затем я установил ссылку на переменную как «Лист1», используя объект рабочих листов.
Set Ws = Worksheets("Sheet1")
Теперь переменная «Ws» содержит ссылку на рабочий лист «Лист1».
Теперь, используя переменную «Ws», я переименовал рабочий лист в «Новый лист».
Этот код изменит имя «Лист1» на «Новый лист».
Если я запущу код вручную или через горячую клавишу F5, то, опять же, мы получим Ошибка нижнего индекса вне диапазонаОшибка нижнего индекса вне диапазонаИндекс вне диапазона — это ошибка в VBA, которая возникает, когда мы пытаемся сослаться на что-то или на переменную, которых нет в коде. Например, если у нас нет переменной с именем x, но мы используем функцию msgbox для x, мы получим ошибку нижнего индекса вне диапазона.читать далее.
Причина, по которой мы получаем эту ошибку, заключается в том, что на предыдущем шаге мы уже изменили рабочий лист с именем «Лист1» на «Новый лист». Поскольку имени рабочего листа больше нет, «Лист1» недоступен, VBA выдает эту ошибку.
Пример № 2. Получить все имена рабочих листов на одном листе.
Мы можем получить все имена рабочих листов книги на одном листе. Приведенный ниже код извлечет все имена рабочих листов.
Код:
Sub Renmae_Example2() Dim Ws As Worksheet Dim LR As Long For Each Ws In ActiveWorkbook.Worksheets LR = Worksheets("Main Sheet").Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(LR, 1).Select ActiveCell.Value = Ws.Name Next Ws End Sub
Этот код извлечет все доступные имена рабочих листов на лист с именем «Основной лист».
Пример № 3. Установка постоянного имени для рабочего листа Excel с помощью VBA
Так как мы работаем с именами листов в кодировании, важно установить для них постоянные имена. Как мы устанавливаем для них постоянные имена?
Например, посмотрите на приведенный ниже код.
Код:
Sub Rename_Example3() Worksheets("Sheet1").Select End Sub
Приведенный выше код выберет файл Sheet1.
Если ваша рабочая книга используется многими людьми, если кто-то изменил имя рабочей таблицы, мы получим ошибку Subscript Out of Range.
Чтобы избежать этого, мы можем установить для него постоянное имя. Чтобы установить постоянное имя, выполните следующие действия.
Шаг 1: Выберите лист, который нам нужно установить постоянное имя в редакторе Visual Basic.
Шаг 2: Нажмите клавишу F4, чтобы увидеть окно свойств.
Шаг 3: В разделе «Имя» свойство «Измените имя на «Новое имя».
Как видите, одно имя отображается как «Лист1», а в скобках мы видим новое имя как «Новый лист».
Теперь при кодировании мы будем использовать новое имя вместо фактического видимого имени.
Код:
Sub Rename_Example3() NewSheet.Select End Sub
Теперь вернитесь в окно рабочего листа. Мы по-прежнему можем видеть имя листа только как «Лист1».
Теперь я изменю имя листа на «Продажи».
Если я запущу код с помощью клавиши F5 или вручную, он все равно выберет только лист с именем «Продажи». Поскольку мы дали ему постоянное имя, он по-прежнему будет выбирать только тот же лист.
УЗНАТЬ БОЛЬШЕ >>
Post Views: 1 238
Похожие записи
Прокрутить вверх
Макрос для копирования и переименования листов Excel
В этом примере детально описана и разобрана автоматизация копирования и переименования листов Excel с исходными кодами макросов.
Как копировать и переименовать лист Excel макросом
Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:
Руководитель этого отдела пожелал, чтобы названия листов планов работ для каждого сотрудника содержали их имена и фамилии.
Многократное копирование листов шаблона для составления и заполнения планов работ сотрудников с переименованием, потребует много времени и сил если делать все это вручную. Поэтому напишем свой макрос, который упростит данную задачу.
Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.
Примечание. В программировании, как и в многих других технических сферах деятельности (например, в бизнес-планировании) – без ТЗ результат ХЗ! Автор цитаты известный бизнесмен и предприниматель Дмитрий Потапенко.
Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:
Sub PlanRabot()
Dim diapaz As Range
Dim i As Long
Dim list As Worksheet
On Error Resume Next
Set diapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo 0
If diapaz Is Nothing Then Exit Sub
Set list = ActiveSheet
For i = 1 To diapaz. Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
Next
End Sub
Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:
Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.
В результате чего макрос сам автоматически скопирует планы работ для каждого сотрудника и присвоит новым листам соответственные имена и фамилии.
Описание исходного кода макроса для копирования и переименования листов
В начале кода макроса вызываем диалоговое окно для выделения диапазона ячеек на рабочем листе Excel и присвоения адреса диапазона в качестве значения для поля ввода данного диалогового окна.
Перед вызовом инструкции открытия диалогового окна отключается контроль ошибок. А после создания экземпляра объекта Range в переменной diapaz, снова включается контроль ошибок. Сделано так потому, что нажатие на кнопку «Отмена» в диалоговом окне вызовет ошибку выполнения макроса. Если же отключить обработку ошибок то, когда пользователь нажмет на кнопку «Отмена», тогда просто не будут выполняться никакие инструкции макроса.
В случаи если пользователь заполнил поле ввода и нажал на кнопку «ОК», тогда в переменную list присваиваться текущий рабочий лист. После чего внутри цикла он копируется ровно столько раз, сколько было выделено ячеек.
В процессе копирования каждому новому листу присваивается имя, которое берется из значения текущей ячейки из предварительно выделенного диапазона. Текст в ячейках обрезается до 31 символов, так как максимальная длинна наименования листа не может содержать более чем 31 символ.
Если необходимо сделать так чтобы соответственные имена и фамилии сотрудников были не только на ярлычках листов, а и в значении ячейки B1 в каждом листе, тогда перед строкой конца цикла Next добавьте следующую строку кода:
ActiveSheet. Range(«B1») = diapaz(i)
Подобным способом можно вводить имена и названия для других ячеек листа. Достаточно указать желаемый адрес ячейки в кавычках.
Версия кода макроса с дополнительной строкой кода выглядит так:
Sub PlanRabot()
Dim diapaz As Range
Dim i As Long
Dim list As Worksheet
On Error Resume Next
Set diapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo 0
If diapaz Is Nothing Then Exit Sub
Set list = ActiveSheet
For i = 1 To diapaz.Count
list.Copy after:=ActiveSheet
ActiveSheet.Name = Left(diapaz(i), 31)
ActiveSheet.Range("B1") = diapaz(i)
Next
End Sub
Пример вставки имен и фамилий не только в ярлычки листов, а и в их определенные пользователем ячейки:
Читайте также: Макрос для копирования листов Excel с заданным количеством копий.
Таким образом, благодаря макросу в пару кликов мышкой можно выполнить большой объем работы. В данном примере скопировано копий только для 8-ми сотрудников. Особенно ощутимую пользу приносит данный макрос при необходимости копировать большое количество листов. Ведь в некоторых фирмах количество сотрудников, заполняющих планы работы, может превышать 100 человек и более.
VBA Добавить новый лист — имя, до/после и другие примеры
Вернуться к примерам кода VBA
В этой статье
- Добавить лист
- Добавить лист с именем
- Создать новый лист с именем из ячейки
- Добавить лист перед/после другого листа
- Вставить лист после другого листа
- Добавить лист в конец Рабочая книга
- Добавить лист в начало рабочей книги:
- Добавить лист в переменную
- Дополнительные примеры добавления листов
- Создать лист, если он еще не существует
- Создать рабочие листы из списка имен
- Упрощенное кодирование VBA
В этом учебном пособии рассматривается, как добавлять/вставлять рабочие листы с помощью VBA.
Добавить лист
Этот простой макрос добавит лист перед ActiveSheet:
Sub Add ()
Листы.Добавить
End Sub
После вставки листа новый лист становится ActiveSheet. Затем вы можете использовать объект ActiveSheet для работы с новым листом (в нижней части этой статьи мы покажем, как вставить новый лист непосредственно в переменную).
ActiveSheet.Name = "NewSheet"
Добавить лист с именем
Вы также можете определить имя листа при создании нового листа:
Sheets.Add.Name = "NewSheet"
Создать новый лист с именем из a Cell
Или используйте значение ячейки, чтобы назвать новый лист:
Sheets.Add.Name = range("a3").value
Добавить лист до/после другого листа
Вы также можете выбрать местоположение места, куда будет вставлен новый лист. Вы можете использовать свойства After или Before, чтобы вставить лист в определенное место в книге.
Вставить лист после другого листа
Этот код вставит новый лист ПОСЛЕ другого листа:
Sheets.Add After:=Sheets("Input")
Это вставит новый лист ПОСЛЕ другого листа и укажет имя листа :
Sheets.Add(After:=Sheets("Input")).Name = "NewSheet"
Обратите внимание на дополнительные скобки, необходимые во втором примере (в первом примере будет сгенерирована ошибка, если будет добавлена вторая скобка).
или раньше:
Sheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
В этих примерах мы явно назвали Лист, используемый для определения местоположения листа. Часто вместо этого вы захотите использовать номер индекса листа, чтобы можно было вставить лист в начало или конец книги:
Добавить лист в конец книги
Чтобы добавить лист в конец книги:
Sheets.Add After:=Sheets(Sheets.Count)
Добавить лист в начало книги:
Чтобы добавить лист в начало книги:
Sheets. Add(Before:=Sheets(1)).Name = "FirstSheet"
Добавить лист в переменную
Этот код присваивает новый лист переменной как лист создан:
Dim ws As Worksheet
Установите ws = Sheets.Add
Отсюда вы можете сослаться на новый лист с помощью переменной ‘ws’:
ws.name = "VarSheet"
Дополнительные примеры добавления листов
Создать лист, если он еще не существует
Возможно, вы захотите создать лист, только если он еще не существует.
Программирование VBA | Генератор кода работает на вас!
Создание рабочих листов из списка имен
Следующая процедура просматривает содержимое одного столбца, устанавливающего рабочие листы Excel в текущей рабочей книге с этими именами. Он вызывает другую функцию, чтобы узнать, существует ли уже лист с таким именем, и если да, то лист не создан.
Частная подпрограмма CommandButton1_Click()
Вызов CreateWorksheets(Листы("Лист2"). Range("A1:a10"))
Конец сабвуфера
Sub CreateWorksheets (Names_Of_Sheets как диапазон)
Dim No_Of_Sheets_to_be_Added As Integer
Dim Sheet_Name как строка
Dim i как целое число
No_Of_Sheets_to_Added = Names_Of_Sheets.Rows.Count
Для i = 1 To No_Of_Sheets_to_be_Added
Имя_Листа = Имена_Листов.Ячейки(i, 1).Значение
'Добавляйте лист только в том случае, если он еще не существует и имя длиннее нуля символов
Если (Sheet_Exists(Sheet_Name) = False) И (Sheet_Name <> ""), тогда
Листы.Добавить().Имя = Имя_Листа
Конец, если
Далее я
Конец суб
Функция Sheet_Exists (WorkSheet_Name As String) As Boolean
Dim Work_sheet как рабочий лист
Sheet_Exists = Ложь
Для каждого листа Work_sheet в ThisWorkbook.Worksheets
Если Work_sheet.Name = WorkSheet_Name Тогда
Лист_Существует = Истина
Конец, если
Следующий
End Function
Итак, если у нас есть следующий текст в ячейках A1: A30 на листе 2:
, тогда будут созданы следующие листы:
Обратите внимание, что хотя слово «Собака» появляется дважды, создается только один лист.
Чтобы загрузить файл .XLS для этого руководства, щелкните здесь.
Кодирование VBA стало проще
Прекратите искать код VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области программирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Узнайте больше!
<<Вернуться к примерам VBA
Надстройка примеров кода VBA
Удобный доступ ко всем примерам кода, найденным на нашем сайте.
Просто перейдите в меню, нажмите, и код будет вставлен прямо в ваш модуль. Надстройка .xlam.
(Установка не требуется!)
Скачать бесплатно
vba — Как добавить именованный лист в конец всех листов Excel?
Я пытаюсь добавить лист Excel с именем «Temp» в конец всех существующих листов, но этот код не работает:
Частный Sub CreateSheet () Dim ws As рабочий лист ws. Name = "Темп" Установите ws = Sheets.Add(After:=Sheets(Sheets.Count)) Конец сабвуфера
Не могли бы вы сообщить мне почему?
- Excel
- vba
- рабочий лист
1
Попробуйте это:
Private Sub CreateSheet() Dim ws As рабочий лист Установите ws = ThisWorkbook.Sheets.Add (после: = _ ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) ws.Name = "Темп" Конец сабвуфера
Или используйте предложение With
, чтобы избежать повторного вызова вашего объекта
Private Sub CreateSheet() Dim ws As рабочий лист С этой рабочей тетрадью Установите ws = .Sheets.Add(После:=.Sheets(.Sheets.Count)) ws.Name = "Темп" Конец с Конец сабвуфера
Приведенное выше можно упростить, если вам не нужно вызывать тот же рабочий лист в остальной части кода.
Sub CreateSheet() С этой рабочей тетрадью . Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp" Конец с Конец сабвуфера
5
Пожалуйста, используйте этот вкладыш:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"
2
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = "XYZ"
(при добавлении рабочего листа он все равно будет активным)
Попробуйте это:
Public Enum iSide iДо iПосле Конец перечисления Частная функция addSheet (ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet При ошибке GoTo the_dark Dim wsSheet как рабочий лист Dim bFoundWS как логическое значение bFoundWS = Ложь Если inNamePrefix <> "" Тогда Установите wsSheet = findWS (inWB, inNamePrefix, bFoundWS) Конец, если Если inBeforeOrAfter = iAfter Тогда Если wsSheet ничего не значит или bFoundWS = False, тогда Worksheets. Add(After:=Worksheets(Worksheets.Count)).Name = inName Еще Листы.Добавить(После:=wsSheet).Name = inName Конец, если Еще Если wsSheet ничего не значит или bFoundWS = False, тогда Worksheets.Add(Before:=Worksheets(1)).Name = inName Еще Worksheets.Add(Before:=wsSheet).Name = inName Конец, если Конец, если Установите addSheet = findWS(inWB, inName, bFoundWS) ' просто чтобы подтвердить его существование и получить его обработку свет: Выход из функции the_dark: MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "непредвиденная ошибка" Очистить Перейти к the_light Конечная функция
Попробуйте использовать:
Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"
Если вы хотите проверить, существует ли уже лист с таким именем, вы можете создать функцию:
Function funcCreateList(argCreateList) Для каждого рабочего листа в ThisWorkbook. Worksheets Если argCreateList = Рабочий Лист.Имя Тогда Exit Function ', если найдено - выйти из функции Конец, если Следующий рабочий лист Рабочие листы.Добавить (после:=Рабочие листы(Рабочие листы.Количество)).Имя = argCreateList Конечная функция
Когда функция создана, вы можете вызвать ее из своего основного Sub, например:
Sub main funcCreateList "Мой лист" Выйти из подпрограммы
Попробуйте изменить порядок кода. Сначала необходимо создать рабочий лист, чтобы присвоить ему имя.
Частная подпрограмма CreateSheet() Dim ws As рабочий лист Установите ws = Sheets.Add(After:=Sheets(Sheets.Count)) ws.Name = "Темп" Конец сабвуфера
спасибо,
Это даст вам возможность:
- Перезаписать или сохранить вкладку с тем же именем.
- Поместите лист в конец всех вкладок или рядом с текущей вкладкой.
- Выберите новый лист или активный.
Вызов CreateWorksheet("Новый", Ложь, Ложь, Ложь)
Sub CreateWorksheet (имя листа, saveOldSheet, isLastSheet, selectActiveSheet)
activeSheetNumber = Листы (ActiveSheet.