Переместить лист в excel макрос

Как переместить рабочие листы

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

Что делает макрос: Если вам часто нужно переместить рабочие листы, вот макрос, который может помочь.

Содержание

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

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

Когда вы хотите изменить порядок листов, используется метод Move обоих объектов листов или объект ActiveSheet. При использовании метода Move, вам нужно указать, куда переместить лист. Вы можете сделать это с помощью аргумента After, аргумента Before, или обоих.

Код макроса

Sub PeremestitListi()
'Переместить активный лист до конца
ActiveSheet.Move After:=Worksheets(Worksheets.Count)
'Переместить активный лист в начало
ActiveSheet.Move Before:=Worksheets(1)
'Переместите Лист 1 перед Листом 12
Sheets("Лист1").Move Before:=Sheets("Лист12")
End Sub

Как работает код

Этот макрос делает три вещи:

Во-первых, он перемещает активный лист в конец. Ничто в VBA не позволяет указывать на «последний лист». Но вы можете найти максимальное количество рабочих листов, а затем использовать это число в качестве индекса для объекта листам. Это означает, что мы можем ввести что-то вроде Worksheets (3), чтобы оказаться на третьем листе в книге. Таким образом, вы можете использовать рабочий лист (Worksheets.Count), чтобы оказаться на последнем листе.

Далее, этот макрос перемещает активный лист к началу рабочей книги. Это просто. Мы используем Worksheets(1), чтобы указать на первый лист в книге, а затем переместить активный лист перед ним.

И, наконец, макрос показывает, что вы можете перемещать листы, просто называя их по именам. В этом примере, мы двигаем Лист1 перед Листом12.

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши personal.xlb в окне Project.
  3. Введите или вставьте код во вновь созданном модуле.

Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.

Создание новых листов

Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.

Синтаксис метода Sheets.Add

expression.Add [Before, After, Count, Type]

где expression — переменная, представляющая собой объект Sheet.

Компоненты метода Sheets.Add

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
  • Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
  • Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.

*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.

**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.

Примеры создания листов

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

‘Создание рабочего листа:

Sheets.Add

Worksheets.Add

ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Лист1

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(1)

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(«Лист1»)

‘Создание нового листа с заданным именем:

Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист»

‘Создание диаграммы:

Sheets.Add Type:=xlChart

‘Добавление нового листа перед

‘последним листом рабочей книги

Sheets.Add Before:=Sheets(Sheets.Count)

‘Добавление нового листа в конец

Sheets.Add After:=Sheets(Sheets.Count)

  • Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
  • Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.

Создаваемый лист можно присвоить объектной переменной:

Dim myList As Object

‘В активной книге

Set myList = Worksheets.Add

‘В книге «Книга1.xlsm»

Set myList = Workbooks(«Книга1.xlsm»).Worksheets.Add

‘Работаем с переменной

myList.Name = «Listok1»

myList.Cells(1, 1) = myList.Name

‘Очищаем переменную

Set myList = Nothing

Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.

Копирование листов

Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.

Синтаксис метода Worksheet.Copy

expression.Copy [Before, After]

где expression — переменная, представляющая собой объект Worksheet.

Компоненты метода Worksheet.Copy

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.

*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.

Примеры копирования листов

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

‘В пределах активной книги

‘(уникальные имена листов)

Лист1.Copy After:=Лист2

‘В пределах активной книги

‘(имена листов на ярлычках)

Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2»)

‘Вставить копию в конец

Лист1.Copy After:=Sheets(Sheets.Count)

‘Из одной книги в другую

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _

After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1»)

‘Один лист активной книги в новую книгу

Лист1.Copy

‘Несколько листов активной книги в новую книгу*

Sheets(Array(«Лист1», «Лист2», «Лист3»)).Copy

‘Все листы книги с кодом в новую книгу

ThisWorkbook.Worksheets.Copy

* Если при копировании в новую книгу нескольких листов хотя бы один лист содержит умную таблицу — копирование невозможно. Один лист, содержащий умную таблицу, копируется в новую книгу без проблем.

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Перемещение листов

Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.

Синтаксис метода Worksheet.Move

expression.Move [Before, After]

где expression — переменная, представляющая собой объект Worksheet.

Компоненты метода Worksheet.Move

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.

*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.

Примеры перемещения листов

Простые примеры перемещения листов:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

‘В пределах активной книги

‘(уникальные имена листов)

Лист1.Move After:=Лист2

‘В пределах активной книги

‘(имена листов на ярлычках)

Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2»)

‘Размещение после последнего листа:

Лист1.Move After:=Sheets(Sheets.Count)

‘Из одной книги в другую

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _

After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1»)

‘В новую книгу

Лист1.Move

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:

Sub Peremeshcheniye()

Dim x

x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»»)

If IsNumeric(x) Then x = CLng(x)

Sheets(«Лист4»).Move Before:=Sheets(x)

End Sub

Удаление листов

Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete

Синтаксис метода Worksheet.Delete

expression.Delete

где expression — переменная, представляющая собой объект Worksheet.

Примеры удаления листов

‘По уникальному имени

Лист1.Delete

‘По имени на ярлычке

Worksheets(«Лист1»).Delete

‘По индексу листа

Worksheets(1).Delete

‘В другой книге

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.

 

ikki

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

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

{quote}{login=Hugo}{date=23.03.2011 10:41}{thema=Re: }{post}{quote}{login=Юрий М}{date=23.03.2011 10:29}{thema=}{post}Алекс, — «перемещающий лист в другой файл»{/post}{/quote}  
Так ведь не противоречит — если макрос в «другом файле» :){/post}{/quote}  
я правильно понял, что тогда «другой файл» — это файл, в котором находится макрос, а перемещаемый лист — в том файле, который был активен при вызове макроса?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

  1. Что делает макрос
  2. Код макроса
  3. Как работает макрос
  4. Как использовать
  5. Скачать файл

Ссылка на это место страницы:
#zadacha

Если вам часто нужно переместить рабочие листы, вот макрос, который может помочь. 

Когда вы хотите изменить порядок листов, используется метод Move обоих объектов листов или объект ActiveSheet. При использовании метода Move, вам нужно указать, куда переместить лист. Вы можете сделать это с помощью аргумента After, аргумента Before, или обоих. 

Ссылка на это место страницы:
#formula

  1. Sub PeremestitListi()
  2. ActiveSheet.Move After:=Worksheets(Worksheets.Count)
  3. ActiveSheet.Move Before:=Worksheets(1)
  4. Sheets("Лист1").Move Before:=Sheets("Лист12")
  5. End Sub

Ссылка на это место страницы:
#kak

Этот макрос делает три вещи: 

— Во-первых, он перемещает активный лист в конец. Ничто в VBA не позволяет указывать на «последний лист». Но вы можете найти максимальное количество рабочих листов, а затем использовать это число в качестве индекса для объекта листы. Это означает, что мы можем ввести что-то вроде Worksheets (3), чтобы оказаться на третьем листе в книге. Таким образом, вы можете посчитать количество листов (Worksheets.Count), чтобы оказаться на последнем листе. 

Далее, этот макрос перемещает активный лист к началу рабочей книги. Это просто. Мы используем Worksheets(1), чтобы указать на первый лист в книге, а затем переместить активный лист перед ним. 

И, наконец, макрос показывает, что вы можете перемещать листы, просто называя их по именам. В этом примере, мы двигаем Лист1 перед Листом12

Ссылка на это место страницы:
#touse

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

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

Ссылка на это место страницы:
#file

Файлы статей доступны только зарегистрированным пользователям.

1. Введите свою почту

2. Нажмите Зарегистрироваться

3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.

Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel. 

Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.

Подписывайтесь на нас в соц.сетях:

Помогаю со студенческими работами здесь

Переместить объект в позицию с анимацией перемещение
На форме timer1 и command1, command2

После того как кликаешь мышкой по форме кнопка command1…

Переместить таблицу на другой лист
Всем привет!

Помогите, пожалуйста, написать макрос, который
1. переносит данные из таблицы на…

Переместить данный элемент в последнюю позицию массива
задан одномерный массив состоящий из n вещественных элементов.Определить максимальный элемент…

Переместить в массиве заданный элемент в указанную позицию
Дан массив А из N целых чисел. Все его элементы, кроме одного, упорядочены по возрастанию….

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

Понравилась статья? Поделить с друзьями:
  • Переместить линии в excel
  • Переместить или скопировать в excel не активна
  • Переместить значения excel в одну
  • Переместить в конец строки word
  • Переменные модели в excel