Ole_123 Пользователь Сообщений: 58 |
#1 10.12.2019 20:01:31 Здравствуйте. Создал макрос который в столбец помещает все листы в екселе. Но я не могу в нужную ячейку вставить этот список. Если я меняю Cells(i,2) Cells(9,2) — выдает только 4 лист книги (всего в книге 4 листа). Как сделать чтобы списком было все листы?
|
||
bigorq Пользователь Сообщений: 783 |
#2 10.12.2019 20:24:10 Так
должна вывести все листы в столбик. Вот правда ActiveSheet перед ним меня смущает. Но я не знаток VBA |
||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
Почитайте в «Приемах» эту статью |
Alec Perle Пользователь Сообщений: 172 |
#4 10.12.2019 21:56:17 Не вдаваясь в моменты использования Select и ActiveSheet — приведенная процедура выводит имена всех рабочих листов, как и предполагается. Но выводит их в одну и ту же ячейку, поэтому и остается в результате только имя последнего листа.
Если это так, то название темы надо поправить. «Список имен рабочих листов книги в одной ячейке с помощью макроса» |
||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#5 10.12.2019 22:11:45
|
||||
Ole_123 Пользователь Сообщений: 58 |
Alec Perle,да, но можно чтобы этот перечень в столбец был а не в 1 ячейке? |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
Ole_123, по ссылке статью читали? |
Ole_123 Пользователь Сообщений: 58 |
Юрий М,конечно, но у меня немного не то. У меня Лист 3-й по счету + мне не сверху листа нужно вставить список а в Cells(9,2). |
bigorq Пользователь Сообщений: 783 |
#9 10.12.2019 23:33:39
Определитесь, чего Вы хотите |
||||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#10 10.12.2019 23:34:34
воспользуйтесь услугами программиста) Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Ole_123 Пользователь Сообщений: 58 |
Ігор Гончаренко,прикрепляю пустой пример) На третем листе выделил куда должен попадать список. В коде выше все попадает в 1 строчку, а нужно чтобы столбцом. Прикрепленные файлы
|
bigorq Пользователь Сообщений: 783 |
а если в коде vbCr заменить на chr(10) ? Будет как Вы хотите? Изменено: bigorq — 10.12.2019 23:43:19 |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#13 10.12.2019 23:45:39 Ну так сделайте минимальную доработку:
|
||
Ole_123 Пользователь Сообщений: 58 |
bigorq,не совсем. Выйдет что все названия листов в 1 ячейке столбцом. А нужно в разных ячейках названия (столбцом) |
)) Изменено: Ігор Гончаренко — 10.12.2019 23:49:37 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
bigorq Пользователь Сообщений: 783 |
#16 10.12.2019 23:49:08
Так а чем Вас первоначальный вариант не устраивает? Замените в Cells 9 на i+8 |
||
Ole_123 Пользователь Сообщений: 58 |
#17 10.12.2019 23:52:23 bigorq,получилось, спасибо!!!!) |
В файле много листов. Имена у листов меняются.
У листы делятся на группы. Каждая группа выполняет свою функцию.
Всё это не принципиально, но делает понятней задачу.
Нужно получить все имена листов в массив, из которого нужно выбрать только имена определенной группы листов.
например, есть листы «Лист 1», «Лист 2», «Лист 3», «RfЛист», «Rfkbcn 2», «Rf запрос»
нужно выбрать только имена листов, начинающиеся с «Rf» поместить их в комбобокс
Добавлено через 16 минут
В массив можно не выбирать наверное.
Я вот что наваял
Visual Basic | ||
|
На чтение 5 мин Опубликовано 26.01.2021
Листам в книгах Excel можно дать имена, соответствующие содержимому. Из них было бы удобно составить оглавление, но не все знают, как это сделать. Существуют несложные способы сформировать список листов и методы, требующие усилий, например установки сторонних дополнений. С помощью инструментов Excel пользователи также могут подсчитать количество листов в крупной книге. Выясним, как получить оглавление для чтения или перехода к каждому листу, какими формулами для этого нужно воспользоваться.
Содержание
- Список листов с помощью формулы
- Как составить список листов через VBA
- Надстройки для составления списка листов
- Как подсчитать количество листов в книге
Список листов с помощью формулы
Этот способ основан на использовании функции, которую нельзя найти в Менеджере. Она связана с макросами Excel 4.0. Чтобы применить формулу на практике, необходимо пройти дополнительный шаг, редко встречающийся в работе с функциями – зайти в диспетчер имен и добавить туда выражение.
- Переходим на вкладку «Формулы» и кликаем по кнопке «Диспетчер имен». Опция находится в разделе «Определенные имена».
- Нажимаем «Создать» в открывшемся диалоговом окне.
- Записываем новое имя в верхнем поле, выбираем область «Книга» (обычно она установлена по умолчанию) и записываем в графу «Диапазон» эту формулу: =ЗАМЕНИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1);1; НАЙТИ(«]»;ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1));»»)
- После заполнения всех полей жмем «ОК». В книге Excel пока ничего не изменится, но эти шаги помогут в будущем. Окно диспетчера имен можно закрыть.
- Открываем лист, где будет расположен список. Выбираем ячейку и записываем в ней формулу с только что созданным именем: =ИНДЕКС(Список_листов;СТРОКА()). Нажмите Enter, и в ячейке появится название первого листа.
- Необходимо вывести все названия листов в столбец. Для этого зажимаем маркер заполнения, который находится в правом нижнем углу выбранной ячейки, и выделяем нужное количество ячеек. В таблице-примере 4 листа столько и было выделено ячеек.
- Создадим список, из которого можно перейти на каждый лист. Выберите другую пустую ячейку и вставьте эту формулу: =ГИПЕРССЫЛКА(«#»&A1&»!A1″;»»&A1).
Обратите внимание! Ячейка A1 прописывается в формуле, чтобы пользователи могли перейти на конкретную ячейку каждого листа. После нажатия Enter появится кликабельное название листа.
- Полный список с гиперссылками можно создать так же, с помощью маркера заполнения.
- Если название листа изменено, придется перезаполнить списки – для этого нужно просто удалить их, снова вставить те же формулы и выделить ячейки ниже.
Важно! Невозможно сделать ссылку на лист с диаграммой в Excel. На экране появляется сообщение об ошибке, переход не происходит.
Как составить список листов через VBA
Существует другой способ составления списка листов из книги – можно подключить пользовательскую функцию через редактор Visual Basic. Такой метод может показаться сложным, но это не так, если воспользоваться шаблоном для добавления функции в программу.
- Открываем VBA с помощью комбинации клавиш «Alt+F11». Если при нажатии F11 снижается яркость или срабатывает другая функция, установленная на эту кнопку, зажмите клавишу Fn.
- Нажмите «Вставить» (Insert) на верхней панели и выберите в открывшемся меню пункт «Модуль» (Module).
- Вставляем в свободное поле этот текст:
Function SheetList(N As Integer)
SheetList = ActiveWorkbook.Worksheets(N).Name
End Function
- Далее можно закрыть окно Visual Basic, потому что этот инструмент больше не понадобится, а функция уже добавлена в программу.
- Открываем лист для списка и вводим формулу в начальную ячейку. Теперь не нужно длинное выражение, чтобы создать список листов. Новая формула выглядит так: =SheetList(СТРОКА()).
- Нажимаем Enter и получаем название листа в ячейке. Маркером заполнения создаем список.
- Для гиперссылок придется использовать ту же длинную формулу: =ГИПЕРССЫЛКА(«#»&A1&»!A1″;»»&A1).
Надстройки для составления списка листов
Надстройки – это дополнения для Microsoft Excel, которые создаются продвинутыми пользователями. Компания Microsoft рассказывает на официальном сайте о возможности подключить надстройки, но не предлагает скачать дополнения, поэтому обычно их загружают из других источников.
Всегда проверяйте загрузки на вредоносные элементы с помощью антивирусной программы.
Существуют платные и бесплатные надстройки. Сегодня рассмотрим набор дополнений для Excel 2007-2019 под названием «Ёxcel». Разработчик распространяет файл на своем сайте за добровольное пожертвование. Установите надстройку по инструкции – после этого можно приступать к составлению списка.
- Открываем лист, где будет размещен список, и нажимаем левой кнопкой мыши на начальную ячейку будущего перечисления.
- На вкладке надстройки находим кнопку «Листы». Кликаем по ней, чтобы открылось меню, и выбираем пункт «Получить список листов книги». Скриншот создателя надстройки:
- Выбираем, какие листы показать в списке. Для простейшего перечисления названий листов кликаем по пункту «Простой список» и жмем на кнопку с галочкой в левом нижнем углу диалогового окна.
- На экране появится список листов. Если выставить настройки сложнее, то внешний вид списка немного изменится.
Как подсчитать количество листов в книге
Иногда в книгах Excel появляется много листов, например если документ относится к крупному проекту. Выяснить, сколько в файле страниц, можно с помощью функции ЛИСТЫ.
Обратите внимание! Функция работает только в версиях Microsoft Excel от 2013.
- Выбираем пустую ячейку и записываем в ней формулу: =ЛИСТЫ(). Не обязательно заполнять аргумент «Ссылка», если нужно посчитать листы в одной книге.
- Жмем Enter и получаем числовое значение.
Если все листы переименованы, и нужно узнать их номера, воспользуйтесь функцией ЛИСТ. Эта формула также доступна с 2013-й версии. У функции ЛИСТ один аргумент – «Значение». Если аргумент не заполнен, после нажатия клавиши Enter в ячейке появится номер того же листа, где была введена формула. Простое выражение с ЛИСТ выглядит так: =ЛИСТ().
Оцените качество статьи. Нам важно ваше мнение:
Return to VBA Code Examples
The following macro loops through every sheet in a workbook and writes the tab name of each sheet sequentially to a sheet you choose. This could be handy for a quick list of every sheet in a workbook with many sheets.
List all Worksheets in a Workbook
To use the macro just replace the word Sheet1(it appears twice) in the code with the tab name where you would like the results. Make sure there isn’t any important information on the output tab because it clears the data their before writing to it.
Sub ListSheets()
Dim ws As Worksheet
Dim x As Integer
x = 1
Sheets("Sheet1").Range("A:A").Clear
For Each ws In Worksheets
Sheets("Sheet1").Cells(x, 1) = ws.Name
x = x + 1
Next ws
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
VBA Code Examples Add-in
Easily access all of the code examples found on our site.
Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.
(No installation required!)
Free Download
Как создать список всех имен рабочих листов из книги?
Предположим, у вас есть книга с несколькими листами, и теперь вы хотите перечислить все имена листов в текущей книге. Есть ли какой-нибудь быстрый способ создать список имен этих листов в Excel, не вводя их один за другим? В этом руководстве приведены инструкции о том, как составить список имен листов в Excel.
- Получите список всех имен рабочих листов из книги динамически с формулами
- Получите список всех имен рабочих листов из книги с кодом VBA
- Получите список всех имен рабочих листов из книги с полезной функцией
Получите список всех имен рабочих листов из книги динамически с формулами
В Excel вы можете определить имя диапазона, а затем применить формулу для перечисления всех имен листов из текущей книги, выполните следующие действия:
1. Перейти к щелчку Формула > Менеджер имен, см. снимок экрана:
2. В Менеджер имен диалоговое окно, нажмите Новинки кнопку, см. снимок экрана:
3. В выскочившем Новое имя диалоговом окне укажите имя в поле Имя и фамилия текстовое поле, а затем скопируйте приведенную ниже формулу в Относится к текстовое поле, см. снимок экрана:
=GET.WORKBOOK(1)&T(NOW())
4. Затем нажмите OK > Закрыть чтобы закрыть диалоговые окна, перейдите к листу, на котором вы хотите перечислить все имена листов, а затем введите следующую формулу в пустую ячейку:
=IFERROR(INDEX(MID(Sheetnames,FIND(«]»,Sheetnames)+1,255),ROWS($A$2:A2)),»»)
Внимание: В приведенной выше формуле Имена листов это название диапазона, которое вы обозначили на шаге 3.
5. Затем перетащите дескриптор заполнения вниз к ячейкам, когда отображаются пустые ячейки, и теперь все имена листов текущей книги перечислены, как показано ниже:
6. Если вы хотите создать гиперссылку для каждого листа, используйте приведенную ниже формулу:
=HYPERLINK(«#'»&A2&»‘!A1″,»Go To Sheet»)
Внимание: В приведенной выше формуле A2 — это ячейка, содержащая имя листа, а A1 — это ячейка, в которой вы хотите разместить активную ячейку. Например, если вы щелкните текст гиперссылки, он найдет ячейку A1 листа.
7. Теперь, когда вы щелкните текст гиперссылки, вы перейдете на этот лист, см. Демонстрацию ниже:
Заметки:
- 1. С помощью приведенных выше формул имена созданных листов отображаются динамически, при изменении имени листа в книге имя индексного листа будет обновлено автоматически.
- 2. Вы должны сохранить файл как Excel Macro-Enabled Workbook формат, если вы хотите, чтобы формулы работали нормально после закрытия и повторного открытия файла.
Получите список всех имен рабочих листов из книги с кодом VBA
Следующие два кода VBA могут помочь вам перечислить все имена листов на новом листе. Пожалуйста, сделайте так:
1. Удерживая нажатой ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
VBA: перечислите все имена рабочих листов с гиперссылками на новом листе:
Sub CreateIndex () 'updateby Extendoffice Dim xAlerts As Boolean Dim I As Long Dim xShtIndex As Worksheet Dim xSht As Variant xAlerts = Application.DisplayAlerts Application.DisplayAlerts = False при ошибке Возобновить следующие листы («Индекс»). Удалить при ошибке GoTo 0 Установить xShtIndex = Sheets.Add (Sheets (1)) xShtIndex.Name = "Index" I = 1 Cells (1, 1) .Value = "INDEX" для каждого xSht в ThisWorkbook.Sheets Если xSht.Name <> "Index", то I = I + 1 xShtIndex. Hyperlinks.Add Cells (I, 1), "", "'" & xSht.Name & "'! A1",, xSht.Name End If Next Application.DisplayAlerts = xAlerts End Sub
2. Затем нажмите F5 ключ для запуска кода, и все имена рабочих листов в активной книге были перечислены в новый рабочий лист с именем Индекс, и имена листов также связаны с каждым листом, см. снимок экрана:
Получите список всех имен рабочих листов из книги с полезной функцией
Для Создать список имен листов утилита сторонней надстройки Kutools for Excel, вы можете создать список имен рабочих листов одним щелчком мыши и связать каждый рабочий лист гиперссылкой.
Примечание:Чтобы применить это Создать список имен листов, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов, см. снимок экрана:
2. В Создать список имен листов диалоговом окне укажите следующие параметры:
3. После завершения настроек нажмите OK. Все имена рабочих листов перечислены со ссылками на новом листе текущей книги. Смотрите скриншот:
Нажмите, чтобы загрузить и бесплатную пробную версию Kutools for Excel от Yhao сейчас!
Больше относительных статей:
- Перечислить все имена файлов в папке и создать для них гиперссылки
- Для повседневной работы вам может потребоваться импортировать несколько имен файлов из папки на рабочий лист и создать гиперссылки для каждого файла, чтобы файл открывался легко и быстро. Возможно, вы можете скопировать и вставить имена файлов и создать для них гиперссылки по одному вручную, но это потратит много времени, если в папке есть сотни файлов.
- Копирование или перемещение файлов из одной папки в другую на основе списка
- Если у вас есть список имен файлов в столбце на листе, и файлы находятся в папке на вашем компьютере. Но теперь вам нужно переместить или скопировать эти файлы, имена которых указаны на листе, из их исходной папки в другую, как показано на следующем снимке экрана. Как вы могли выполнить эту задачу так быстро, как вы можете в Excel?
- Получить список имен листов в Google Таблицах
- В этой статье я расскажу о некоторых методах получения имени текущего имени листа или списка имен листов в таблицах Google.
- Перемещение между листами с помощью раскрывающегося списка
- Предположим, у вас есть книга, содержащая несколько листов, теперь вам нужно создать раскрывающийся список или поле со списком, в котором перечислены все имена листов, и когда вы выбираете одно имя листа из раскрывающегося списка, он немедленно переходит на этот лист. В этой статье я расскажу, как перемещаться между листами с помощью раскрывающегося списка в Excel.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Ill show you how to loop through all of the worksheets in a workbook in Excel using VBA and Macros.
This only takes a few lines of code and is rather simple to use once you understand it.
Here is the macro that will loop through all worksheets in a workbook in Excel:
Sub Sheet_Loop()
'count the number of worksheets in the workbook
sheet_count = ActiveWorkbook.Worksheets.Count
'loop through the worksheets in the workbook
For a = 1 To sheet_count
'code that you want to run on each sheet
'simple message box that outputs the name of the sheet
MsgBox ActiveWorkbook.Worksheets(a).Name
Next a
End Sub
Now, Ill go through the macro step-by-step.
ActiveWorkbook.Worksheets.Count
This line is what counts the number of worksheets that are in the workbook.
The first part of the line simply sets the variable sheet_count equal to the number of sheets in the workbook:
sheet_count = ActiveWorkbook.Worksheets.Count
Now that we know how many worksheets there are, we can loop through them.
We are going to use a very simple For Next loop in this case and you can copy it directly from here into your project.
For a = 1 To sheet_count
'code that you want to run on each sheet
Next a
In the above lines we are creating a new variable a and setting it equal to 1. We then use the sheet_count variable to tell the macro when to stop looping; remember that it holds the numeric value of how many sheets there are in the workbook.
After this first line, which creates the loop, we then put all of the code that we want to run on each worksheet.
Dont forget that, at the end of the loop we still need something:
Next a
This tells the For loop that it should increment the value of the a variable by 1 each time the loop runs through a cycle or goes through a sheet. The loop will not work without this line of code at the end of it.
In the original example we also have a line of code within the For loop:
MsgBox ActiveWorkbook.Worksheets(a).Name
This line will output the name of each worksheet into a pop-up message box; it also illustrates how you can access the worksheets from within the loop.
To do anything with the sheets from within the loop, we need to access each sheet by its reference or index number. Each sheet has an index number and it always starts at 1 and increments by 1 for the next sheet in the workbook.
This is why we create the a variable and set it equal to 1 in the For loop, because the first sheet in the workbook always has an index number of 1, and we want to use a as the index number to access the worksheets.
Each time the loop runs and a is incremented by one, this allows you to access the next sheet in the workbook. This is why we needed to count how many sheets were in the workbook, so we would know when to tell the For loop to stop running because there were no more sheets.
So, we can access the worksheets from within the loop by using
ActiveWorkbook.Worksheets(index number)
or
Sheets(index number)
Remember that the variable a is being used as our index number in this case.
Using this method you can do anything you want with the corresponding worksheet.
And thats how you loop through all worksheets in a workbook in Excel!
Make sure to download the accompanying file for this tutorial so you can see the VBA/Macro code in action.
Similar Content on TeachExcel
Get the Name of a Worksheet in Macros VBA in Excel
Tutorial: How to get the name of a worksheet in Excel using VBA and Macros and also how to store tha…
Excel Input Form with Macros and VBA
Tutorial:
Forms Course
How to make a data entry form in Excel using VBA and Macros — this allows yo…
Get User Submitted Data from a Prompt in Excel using VBA Macros
Tutorial: How to prompt a user for their input in Excel.
There is a simple way to do this using VBA …
Find the Next Blank Row with VBA Macros in Excel
Tutorial:
Learn how to find the next empty cell in a range in Excel using VBA and Macros. This me…
Loop Through an Array in Excel VBA Macros
Tutorial:
I’ll show you how to loop through an array in VBA and macros in Excel. This is a fairly…
Copy Data or Formatting to Multiple Worksheets in Excel
Tutorial:
Quickly copy all or parts of a single worksheet — data, formatting, or both — to multiple…