Vba excel как перейти на другой лист

Обновлено: 08.07.2024

К именам листов рабочей книги предъявляется несколько ограничений:

1) длина введенного имени не должна превышать 31-го знака;

3) имя не должно быть пустым.

Процесс переименования

Процедура переименования листов в Экселе в целом интуитивно понятна. Тем не менее, у некоторых пользователей, которые только начинают освоение программы, возникают определенные трудности.

Прежде, чем перейти непосредственно к описанию способов переименования, выясним, какие названия давать можно, а присвоение каких будет некорректным. Имя может быть присвоено на любом языке. При его написании можно использовать пробелы. Что же касается основных ограничений, то следует выделить следующие:

  • В наименовании не должны присутствовать такие символы: «?», «/», «», «:», «*», «[]»;
  • Название не может быть пустым;
  • Общая длина наименования не должна превышать 31 знак.

При составлении имени листа нужно учитывать вышеуказанные правила. В обратном случае программа не даст завершить данную процедуру.

контекстное меню ярлыка

Наиболее интуитивно понятный способ переименования – это воспользоваться возможностями, которые предоставляет контекстное меню ярлыков листов, расположенных в левой нижней части окна приложения сразу над строкой состояния.

  1. Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».




двойной щелчок по ярлыку

Существует и более простой способ переименования. Нужно просто кликнуть двойным щелчком по нужному ярлыку, правда, в отличие от предыдущего варианта, не правой кнопкой мыши, а левой. При использовании данного способа никакого меню вызывать не нужно. Наименование ярлыка станет активным и готовым к переименованию. Вам останется только набрать нужное название с клавиатуры.


Как переименовать лист рабочей книги при помощи мыши?

Для переименования листа необходимо:

1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;

2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;

3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.

Вставка нового листа в Excel

Для того чтобы изменить количество листов, открываемых по умолчанию в новой книге Excel, перейдите к представлению Backstage, нажмите Параметры, затем выберите количество листов, которые необходимо включать в каждую новую книгу.


Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках – имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы – изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

  • УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression – переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False – лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden – лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True – лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)
Worksheets ( Worksheets . Count ) . Visible = xlVeryHidden

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Описание задачи

Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.

C помощью нее переименовать все листы в книге можно следующим образом:

Как копировать и переименовать лист 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


Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.

Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.

Эту же операцию можно выполнить в Excel с помощью команды контекстного меню листа Переместить/скопировать или команды Правка/Переместить/скопировать лист . Ими особенно удобно пользоваться, если вы хотите скопировать или переместить лист в другую книгу.

Перед копированием или перемещением листа в другую книгу необходимо открыть книгу-получатель. Кроме того, в случае копирования не забудьте установить флажок в поле Создать копию . В противном случае лист просто переместится в указанное вами место.

Задание для самостоятельной работы:

В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.

Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.

Как сменить название листа

При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.

Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.

Программа выделит этот ярлык и включит название в режим редактирования, так что вы сможете прописать любое название какое захотите.

1. Название листа может содержать максимум до 31 символа, причем пробелы допускаются.

2. В названии листа нельзя прописывать следующие символы:

* (звездочка).

: (двоеточие);

/ (косая черта);

[ ] (квадратные скобки);

< > угловые скобки);

? (знак вопроса);

(обратная косая черта);

Учтите, что именно на ярлыке листа будет отображаться название, поэтому для длинного названия необходимо будет более длинный ярлык. Таким образом, если вы хотите использовать более длинные имена листов, то без прокручивания полосы вы сможете увидеть только несколько ярлыков.

Как изменить имя листа при помощи контекстного меню?

Чтобы переименовать лист при помощи контекстного меню, нужно:

1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;

3) набрать новое имя листа в соответствии с требованиями к именам листов;

4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.

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

Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.

Если требуется ограничить изменения, которые разрешается вносить в текущий лист, Вы можете его защитить. Для этого щелкните правой кнопкой мыши по ярлычку листа и из контекстного меню выберите пункт Защитить лист.

Во-первых, у Вас, похоже, синтаксическая ошибка:
вместо Workbook(1) следует писать Workbooks(1)

Но, как Вам уже посоветовали, лучше вообще не использовать такие конструкции в коде.
Для обращения к активной книге используйте объект ActiveWorkbook,
а для доступа к книге, из которой выполняется код - ThisWorkbook

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

В 95 процентах случаев методы Select и Activate абосолютно не нужны.

К тому же, без использования методов Select и Activate код будет работать быстрее и эффективнее


В Вашем случае, проще будет организовать работу с листами таким образом:
(учитывая, что одновременно в цикле обрабатываются в основном 2 листа)

Последний раз редактировалось EducatedFool; 05.12.2008 в 03:11 .

экселю совершенно все равно как будет получен № листа
sheets(1*2+1).activate
sheets(3).activate
sheets(i*2+1).activate, где i = 1.

допускаю workbоok(1) - это не та книга, в которой вы пытаетесь активировать другой лист, и эксель добросовестно в workbbok(1) меняет активность листов. выкиньте workbbok(1) из кода.

Выбрасывал тоже что и при вопросе. Я задумался, что может я не активировал какой-то Project, но тогда почему при set sheet все работает.

Rom1k06 см выше.

EducatedFool Вы гений . такой подход мне нравиться. Сегодня (а может завтра) его попробую. Определить листы заранее. Я до этого как-то не допетрил. только один вопров, можно ли чуть изменить вашу идею следующим образом.
dim sh1(16) as worksheet, sh2(16) as worksheet

далее как у вас только с массивом листов. и это будет прелесть. Только один вопрос как внутри цикла активировать нужный лист. (необходимо клонировать таблицы с ячейки а1 до ячейки AZ54. И провести операции по обработке нужного листа я ранее задавал этот вопрос на форуме (три вопроса по макросам - второй вопрос).


Гиперссылка обычно используется с веб-сайтами для перехода с одной страницы на другую или с одного веб-сайта на другой в Интернете. Аналогичным образом, мы можем также контролировать движения в листе Excel. Различные операции, которые могут быть выполнены в Excel:

  • Перемещение в определенное место в текущей рабочей книге.
  • Открываем разные документы и выбираем указанную область внутри документа.
  • Переход к веб-страницам с рабочего листа.
  • Отправка электронной почты на указанный адрес.

Гиперссылка легко распознается из-за изменения цвета, в основном синего цвета. Существуют разные способы создания гиперссылки в Excel и использования VBA.

Как создать гиперссылку в Excel, используя код VBA?

Вы можете добавить гиперссылку на текст или один лист на другой лист в Excel, используя свойство добавления гиперссылки. Формат должен сопровождаться указанием, где гиперссылка должна быть создана и URL навигации и т. Д.

Формат для VBA Гиперссылка Добавить


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

  • Якорь: Определяет ячейку, которую вы хотите создать гиперссылку.
  • Адрес: URL, по которому должна перейти навигация.
  • (SubAddress): подадрес URL.
  • (ScreenTip): значение указателя мыши, отображаемое при размещении указателя мыши.
  • (Текст для отображения): текст должен отображаться в ячейке.

Используйте свойство Active cell, чтобы добавить гиперссылку.


Выберите метод добавления из списка


Примеры создания гиперссылок в Excel VBA

Ниже приведены различные примеры создания гиперссылок в Excel с использованием кода VBA.

Вы можете скачать этот шаблон гиперссылки VBA Excel здесь - Шаблон гиперссылки VBA Excel

Пример № 1 - Создание гиперссылки из рабочего листа на сайт

Мы хотим создать гиперссылку из рабочей таблицы с именем sub на веб-сайт, используя код VBA в Excel.

Ниже приведены шаги для создания гиперссылки в Excel VBA:

Шаг 1: Создайте функцию с именем hyper, чтобы добавить гиперссылку.

Код:


Шаг 2: Используйте активный объект ячейки, чтобы открыть метод добавления гиперссылки.

Код:


Шаг 3: Укажите значения параметров для метода добавления гиперссылки.

Код:

  • Якорь: название листа
  • Адрес: Гиперссылка, по которой следует перемещать элемент управления, учитывая адрес веб-сайта.
  • ScreenTip: текст указателя мыши
  • TextToDisplay: к какому тексту должна быть привязана гиперссылка

Шаг 4: Нажмите F5 или кнопку Run под VBE, чтобы запустить этот код и увидеть результат.


Пример №2 - Гиперссылка для соединения двух листов

У нас есть две таблицы с именами Home и sub . Давайте попробуем создать гиперссылку с юга на дом, используя код VBA.


Выполните следующие шаги, чтобы создать гиперссылку с одного листа на другой в той же книге, используя код VBA.

Шаг 1: Создайте функцию, где мы напишем все коды для выполнения действия. Напишите код для выбора «подчиненного» листа, используя метод выбора рабочего листа.

Код:


Поскольку элемент управления перемещается внутри листа, необходимо выбрать лист, в котором вы создаете гиперссылку.

Шаг 2: Выберите диапазон ячеек на листе, где будет создана гиперссылка.

Код:


Шаг 3: Теперь давайте добавим гиперссылку, используя свойство active cell.

Код:


Поскольку рабочая таблица уже выбрана, привязка задается как «Выбор». Гиперссылка указана как лист «Домой» и диапазон А1.

Шаг 4: Запустите код и на листе будет показана гиперссылка, как показано ниже.

Шаг 5: После нажатия на текст элемент управления будет перемещен на лист « Домой ». И ячейка А1 будет выделена.

Пример № 3 - Гиперссылка с несколькими листами

Если вы хотите создать гиперссылку на нескольких листах, это также возможно. В этом примере у нас есть несколько листов в одной книге. Существует другой тип функций Excel, так что из основного листа «Функции». Давайте попробуем создать гиперссылку на другой лист, названный разными функциями, используя код VBA:

Несколько рабочих листов названы ниже с различными именами функций Excel


Поскольку мы хотим создать гиперссылку на каждый лист, трудно повторить код. Для создания гиперссылки с использованием кода VBA в Excel выполните следующие действия:

Шаг 1: Создайте переменную для удобной работы с таблицей.

Код:


Шаг 2: Теперь мы хотим выбрать главную страницу, которая действует как индексную страницу, и выбрать диапазон ячеек A1.

Код:


Шаг 3: Для перемещения по нескольким рабочим листам и гиперссылкам мы создаем для каждого цикла. A1 уже выбран в качестве активной ячейки, поэтому создайте гиперссылку из этого.

Код:


Шаг 4. Укажите значения параметров, чтобы создать гиперссылку для каждого листа. Поскольку гиперссылка начинается с активной ячейки, якорь = активная ячейка, адрес задается как «» .

Код:


Шаг 5: Гиперссылка проходит через лист, поэтому мы должны указать подадрес в качестве имен листов. Чтобы получить имена листов, мы можем использовать переменную ws и диапазон ячеек как A1. Название листа будет указано с одинарной кавычкой. Имя листа и диапазон будут указаны, а также закрыты одинарной кавычкой.

Код:


Шаг 6: Чтобы получить гиперссылку с именем листа, TextToDisplay присваивается как ws.Name

Код:


Этот код будет хранить гиперссылки для каждого листа в той же ячейке A1.

Шаг 7: Чтобы изменить этот каждый лист на другую ячейку вниз на одну ячейку от активной ячейки.

Код:


Шаг 8: Запустите программу, и каждое имя листа будет отображено на листе «Функции», и при нажатии на него элемент управления переместится на соответствующий лист.

То, что нужно запомнить

  • Свойство гиперссылки активной ячейки, используемой для создания гиперссылок в VBA.
  • Гиперссылка поможет легко перемещаться по книге.

Рекомендуемые статьи

Это руководство по гиперссылкам VBA. Здесь мы узнаем, как создавать гиперссылки на рабочем листе, используя код VBA для быстрого перехода с одного листа на другой, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Сложный макрос

«Писать макросы не сложно, сложно писать красивые макросы»

Джон Уокенбах

Консультант Microsoft

по проектированию электронных таблиц

Довольно часто приходится копировать данные из одного рабочего листа в другой. Давайте с помощью макроса постараемся автоматизировать этот процесс.

Синхронизация двух листов в файле Excel

Откроем файл Excel и запустив запись макроса, скопируем из листа Лист1 любую ячейку в лист Лист2.

Теперь давайте откроем код для редактирования: Сервис – Макрос – Макросы … где должно появиться окошечко с вашими записанными макросами. Выделите редактируемый Макрос и нажмите Изменить


Вы перейдёте в режим редактирования VBE ( Visual Basic Editor ). Это специализированный и достаточно навороченный редактор VBA . Не стоит его бояться, слева должна появиться панель (на подобии Проводника) с имеющимися разделами (модулями).


Нас в принципе интересуют разделы с названиями Module 1 и тд. В этих модулях хранится код VBA . Наверху имеется название VBA -проекта (в скобочках название файла Excel ) у нас это ( Macros 2. xls ). Нажмём на этот модуль Module 1.


Перед вами должен появится программный код VBA , давайте разбираться:

Sub Макрос2 () оператор Sub это начало программы, мы говорим VBA , что хотим что-то создать. Макрос2 это название нашего макроса, его можно переименовать.

‘ Макрос2 Макрос все записи, которые имеют пере д собой знак ‘ являются комментариями в программе и не исполняются. Таким образом, скажем можно прокомментировать своё действие Selection . Copy ’ Копируем выбранную ячейку . Или даже временно заблокировать целую строчку программного кода. Всё, что окрашивается зелёным цветом – это комментарии.

Range (“ G 2”). Select Мы выделяем ячейку G 2 на активном листе.

Selection . Copy Копируем эту выделенную ячейку в память компьютера (в буфер обмена).

Sheets (“Лист1”) . Select Находим и выделяем лист Лист1

Range (“Н10”). Select На выделенном листе Лист1 выделяем ячейку Н10

ActiveSheet . Paste На выделенном листе Лист1 вставляем в ячейку Н10 данные из буфера.

End Sub Сообщаем VBA о нашем желании завершить программу.

Вот так наши действия записал компьютер в VBA -код. Так как Лист, из которого нужно копировать данные не указан (указана только ячейка G 2), VBA будет копировать ячейку G 2 из любого листа, в Лист 1 в ячейку H 10.

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

Синхронизация двух файлов Excel .

В качестве примера, скопируйте на жёсткий диск и откройте (одновременно) два файла:

(Данный пример находится в файле Macros 2. xls в Module 2)

Sub Bridge ()’ Начало программы Bridge

‘ Макрос удалённого доступа

Windows (" Test . xls "). Activate ’ Выбираем файл из которого будем копировать ячейку

Sheets ("Лист1"). Select ’ Выбираем лист в этом файле

' Range (" A 1"). Select ’ Можем выбрать определённую ячейку. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

Selection . Copy ’ Копируем ячейку

Windows (" Macros 2. xls "). Activate ’ Выбираем файл в который будем копировать ранее скопированную ячейку

Sheets ("Лист 2"). Select ’ Выбираем лист в этом файле

' Range (" A 1"). Select ’ Выбираем фиксированную ячейку, которая будет постоянна для вставки. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

ActiveSheet.Paste’ Вставляем значение

End Sub’ Завершаем программу

Суть этой программки в следующем: мы из открытого файла Test . xls копируем выделенную ячейку на листе Лист 1 в файл Macros 2. xls на лист Лист 2

Записав этот макрос, не забудьте присвоить ему комбинацию клавиш для запуска:

Сервис – Макрос – Макросы …


Выбираем Параметры … и вписываем букву для комбинации (в нашем случае это q ).


Теперь при нажатии комбинации клавиш Ctrl + q , у нас из файла Test . xls копируется выделенная ячейка в файл Macros 2. xls (естественно эти файлы должны быть открыты и рабочие листы чётко прописаны).

Можно украсить свою программу. Скопируйте в файл Macros 2. xls любую картинку (в примере уже имеется кнопка) и выделив эту картинку правой кнопкой мыша выберите опцию Назначить макрос … После чего откроется список макросов – выберите один из них. Теперь нажимая на заветную кнопочку, вы автоматически будете запускать этот макрос. Естественно, с этой кнопкой можно выполнять различные манипуляции: делать надписи, раскрашивать, растягивать и тд.

Читайте также: