Проверка существования листа в рабочей книге Excel из кода VBA с помощью присвоения его объектной переменной или перебора существующих листов циклом.
Присвоение листа объектной переменной
Пользовательская функция VBA Excel для проверки существования листа в рабочей книге путем определения результата присвоения ссылки на него объектной переменной. Присвоение состоялось (SheetExist = True) – искомый лист существует, произошла ошибка и присвоение не состоялось (SheetExist = False) – лист не существует.
Function SheetExist(WbName As String, ShName As String) As Boolean Dim mySheet As Worksheet On Error Resume Next Set mySheet = Workbooks(WbName).Sheets(ShName) SheetExist = Not mySheet Is Nothing End Function |
Аргументы функции SheetExist:
- WbName – имя открытой рабочей книги, в которой ищется лист.
- ShName – имя искомого рабочего листа.
Перебор существующих листов циклом
Проверка существования рабочего листа в книге Excel с помощью перебора существующих листов циклом VBA и сравнения их имен с именем искомого листа. Совпадение найдено (SheetExist = True) – искомый лист существует, совпадение не найдено (SheetExist = False) – лист не существует.
Function SheetExist(WbName As String, ShName As String) As Boolean Dim mySheet As Worksheet For Each mySheet In Workbooks(WbName).Sheets If mySheet.Name = ShName Then SheetExist = True Exit Function End If Next End Function |
Пример проверки существования листа
Пример проверки существования искомого листа в рабочей книге Excel с помощью пользовательской функции VBA SheetExist:
Sub Primer() If SheetExist(ThisWorkbook.Name, «Лист1») Then MsgBox «Лист существует» Else MsgBox «Лист не существует» End If End Sub |
Имя сторонней открытой книги должно быть указано вместе с расширением:
... If SheetExist(«Книга2.xlsm», «Лист2») Then ... |
Обратите внимание, если книга, имя которой указано в параметре WbName закрыта или не существует, будет сгенерирована ошибка.
Чтобы функция проверки существования рабочего листа SheetExist была доступна из модуля любой книги Excel на вашем компьютере, разместите ее в Личной книге макросов.
Хитрости »
1 Май 2011 136652 просмотров
Как узнать существует ли лист в книге?
Довольно часто при добавлении листов в книгу кодом необходимо удостовериться существует ли уже лист с таким именем или же нет. Т.к. если уже существует, то попытка создать лист с таким же именем неизбежно приведет к ошибке. Можно, конечно, поставить обработчик ошибки On Error.
Sub Add_New_Sheet() On Error Resume Next Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист" End Sub
Но тогда, если лист с таким именем уже существует, будет создан лист со следующим порядковым номером(типа Лист4). А этого в большинстве случаев не надо, т.к. обычно планируется все же либо создать лист с нужным именем, либо не создавать вовсе.
Я обычно проверяю так:
Sub Add_New_Sheet() Dim wsSh As Worksheet On Error Resume Next Set wsSh = Sheets("Новый лист") If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист" 'здесь можно либо активировать лист, либо производить еще какие действия 'wsSh.Activate End Sub
Если предполагается использовать такую проверку более одного раза в коде, то имеет смысл вынести проверку в отдельную функцию
Function Sh_Exist(wb As Workbook, sName As String) As Boolean Dim wsSh As Worksheet On Error Resume Next Set wsSh = wb.Sheets(sName) Sh_Exist = Not wsSh Is Nothing End Function
Функция проверяет наличие листа в указанной книге и возвращает True, если лист есть в книге и False, если листа нет.
wb — объект Workbook, наличие листа в которой надо проверить.
sName — имя листа, наличие которого необходимо проверить.
Код функции Sh_Exist необходимо поместить в стандартный модуль и тогда для проверки наличия листа достаточно будет одной строки кода:
Sub Add_New_Sheet() If Not Sh_Exist(ActiveWorkbook, "Новый лист") Then ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = "Новый лист" End If End Sub
«Новый лист» — вместо этого текста указывается имя листа, наличие которого необходимо проверить.
Если проверять надо не в активной книге, а в какой-либо другой, то вместо ActiveWorkbook необходимо указать эту книгу. Например, если книга называется «Отчет.xlsx», то код будет таким:
Sub Add_New_Sheet() If Not Sh_Exist(Workbooks("Отчет.xlsx"), "Новый лист") Then Workbooks("Отчет.xlsx").Sheets.Add(, Workbooks("Отчет.xlsx").Sheets(Workbooks("Отчет.xlsx").Sheets.Count)).Name = "Новый лист" End If End Sub
Хотя в данном случае практичнее выделить отдельную переменную:
Sub Add_New_Sheet() Dim wbCheck As Workbook Set wbCheck = Workbooks("Отчет.xlsx") If Not Sh_Exist(wbCheck, "Новый лист") Then wbCheck.Sheets.Add(, wbCheck.Sheets(wbCheck.Sheets.Count)).Name = "Новый лист" End If End Sub
Можно еще упростить и конструкцию With использовать, но это уже другая тема
Также см.:
Как проверить открыта ли книга?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Дабы не создавать новую тему,
В моей книге есть макросы, имеющие в своем составе формулы со ссылками на другие листы этой книги. При запуске макросов необходимо проверить книгу на соответствие имен листов (не изменил ли кто случайно). если все ОК, то запускаем другой макрос, если нет, то сообщение, какой лист нужно проверить.
воспользовался примером Busine2012, и Казанский, написал код:
Visual Basic | ||
|
Макрос работает.
Вопрос: можно ли упростить код для проверки имен листов, если число проверяемых листов на правильность имени будет больше 10 (без ухудшения производительности)?
Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..
Заранее спасибо.
Добавлено через 25 минут
Сообщение от dmb2
Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..
Visual Basic | ||
|
Добавлено через 5 минут
Но код проверяет (соответственно и переименовывает неправильные листы) по одному за работу всего цикла. Хотелось бы чтобы сразу все листы проверил, и все исправил.
Добавлено через 5 минут
Возникла мысль, хотелось бы узнать мнение о целесообразности,
Может обойтись без проверки листов и сразу все листы переименовать?
seelena Пользователь Сообщений: 24 |
У меня макрос должен копировать лист, вставлять, а затем переименовывать в определенное название. |
for each ws in sheets.collection |
|
seelena Пользователь Сообщений: 24 |
{quote}{login=}{date=18.03.2010 03:39}{thema=}{post}for each ws in sheets.collection А не подскажите, как правильно это добавить? Как не пытаюсь, ошибки выдает( У меня сейчас: On Error Resume Next |
Hugo Пользователь Сообщений: 23257 |
Зачем столько селектов? Sub tt() |
seelena Пользователь Сообщений: 24 |
{quote}{login=Hugo}{date=18.03.2010 04:29}{thema=}{post}Зачем столько селектов? Sub tt() А как сюда проверку вставить на то, есть ли уже такой лист или нет? |
Dophin Пользователь Сообщений: 2684 |
Sub tt() |
Dophin Пользователь Сообщений: 2684 |
Sub tt() Sheets(«Прайс лист»).Copy Before:=Sheets(1) то есть вот так конечно) |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Строка Sheets(«Бланк заказа»).Select на мой взгляд лишняя — новый лист (копия) сам активируется. |
Igor67 Пользователь Сообщений: 3729 |
#9 18.03.2010 22:26:06 Есть такой замечательный ресурс http://msoffice.nm.ru/faq/macros.htm А это подборка вариантов определения наличия определенного листа в книге http://www.msoffice.nm.ru ‘ Private Function WorksheetIsExist(iName$) As Boolean Private Function WorksheetIsExist(iName$) As Boolean Private Function WorksheetIsExist(iName$) As Boolean Private Function WorksheetIsExist(iName$) As Boolean Private Function WorksheetIsExist(iName$) As Boolean Пример вызова любой из вышеопубликованных авторских функций : Private Sub Test() |
Как проверить, существует ли лист в книге?
Когда у вас есть десятки рабочих листов или даже сотни рабочих листов в рабочей книге, и вы хотите найти или проверить, существует ли лист в этой рабочей книге, в общем, это может быть огромной работой. Теперь я представляю код VBA и удобный инструмент для быстрой проверки наличия листа в рабочей книге.
Проверьте, существует ли лист в книге с помощью VBA
Проверьте, существует ли лист, и переключитесь на него с помощью Kutools for Excel
Проверьте, существует ли лист в книге
Выполните следующие действия, чтобы скопировать код VBA и запустить его, чтобы проверить, существует ли лист в текущей книге.
1. Нажмите Alt + F11 для отображения Microsoft Visual Basic для приложений окно.
2. В окне нажмите Вставить > Модули чтобы отобразить новое окно модуля, затем скопируйте следующий код VBA в окно модуля.
VBA: проверьте, существует ли лист в книге.
Function CheckSheet(pName As String) As Boolean
'Updateby20140617
Dim IsExist As Boolean
IsExist = False
For i = 1 To Application.ActiveWorkbook.Sheets.Count
If Application.ActiveWorkbook.Sheets(i).Name = pName Then
IsExist = True
Exit For
End If
Next
CheckSheet = IsExist
End Function
3. Сохраните этот код, вернитесь на лист и выберите пустую ячейку, чтобы ввести эту формулу. = CheckSheet («Shee1») (Sheet1 указывает имя листа, которое вы хотите проверить, существует ли он) в него, нажмите Enter кнопка, НЕПРАВДА указывает, что этот лист не существует, и TURE указывает, что он существует в текущей книге.
Проверьте, существует ли лист, и переключитесь на него с помощью Kutools for Excel с VBA
С помощью указанной выше функции вы просто можете проверить, существует ли лист, что также немного сложно. Однако с Kutools for Excel, в области навигации перечислены все имена листов, которые поддерживают прокрутку, чтобы найти лист, или фильтровать имя листа, чтобы найти лист, и при необходимости вы можете щелкнуть имя листа, чтобы быстро переключиться на лист после поиска.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
1. включите книгу, в которой вы хотите проверить имя листа, если оно существует, а затем щелкните Кутулс > Навигация. Смотрите скриншот
:
2. Затем на всплывающей панели щелкните Рабочая тетрадь и лист кнопку, чтобы развернуть панель, вы можете увидеть весь список имен листов на панели, вы можете прокрутить, чтобы найти имена листов.
3. Или вы можете проверить Фильтр Нажмите кнопку, затем введите ключевые слова имени листа, который вы хотите проверить, затем указанное имя листа будет списком, щелкните имя листа, затем оно перейдет к листу.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Sub example_1() On Error Resume Next 'Sheets("Sheet8").Activate 'or With Sheets("Sheet8"): End With If Err Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Sheet8": Err.Clear On Error GoTo 0 End Sub
Sub example_2() Dim wsh As Worksheet, bu As Boolean: bu = True For Each wsh In ThisWorkbook.Worksheets If wsh.Name = "Sheet8" Then bu = False: Exit For Next wsh If bu Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Sheet8" End Sub
Sub example_3() Dim s$: s = "Sheet8" If Not Evaluate("ISREF('" & s & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = s Else Sheets(s).Activate End If End Sub
Sub example_4() If SheetExists("Sheet8") = False Then Sheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = "Sheet8" End If End Sub Function SheetExists(WSName) As Boolean On Error Resume Next SheetExists = Sheets(WSName).Name = WSName On Error GoTo 0 End Function
-
Определение листа
-
Как в excel добавить лист
-
Как переименовать лист в excel
-
Отобразить листы в excel
-
Как удалить лист в эксель
-
Как распечатать на одном листе
-
Как копировать листы в excel
-
Что ещё?
Лист microsoft excel
В этой статье мы рассмотрим основные моменты в работе с листами excel: как переименовать лист в excel, как отобразить листы в excel, как удалить лист в эксель, как распечатать страницу эксель на одном листе, как сделать копию листа в excel, как сохранить лист эксель в отдельный файл и многое другое.
“
Лист ms excel – это рабочая вкладка, на которой находится двумерная таблица, состоящая из ячеек.
Любой файл эксель состоит, как минимум из одного листа. Лист в экселе состоит из 16 384 столбцов и 1 048 576 строк (в версиях младше 2007 года их меньше), на их пересечениях находятся ячейки для ввода формул, чисел, текста, дат и т.д. Количество самих листов в excel не ограниченно (зависит от оперативной памяти Вашего компьютера).
В основном вся работа на листе excel происходит в ячейках. Подробнее про работу с ячейками можно почитать в нашей статье «Работа с ячейками в excel».
Помимо ячеек на листе эксель можно добавлять несколько слоев различного рода вставок таких как: диаграммы, рисунки, срезы, формы элементов управления и многое другое.
Листы excel помогают логически разделять массивы данных, например на месяца, года, виды бизнеса, сотрудников и т.п. В этой статье мы рассмотрим основные моменты в работе с листами excel.
Как в excel добавить лист
Обычно при создании файла excel уже есть 3 листа, но в зависимости от способа создания книга может быть и с одним листом. Если Вам недостаточно уже существующих листов эксель, то можно их создать буквально в один клик. Добавить лист в excel можно несколькими способами.
Самый распространенный способ вставить лист в excel – это в левом нижнем углу справа от вкладок с названиями листов нажать на значок +:
Как создать новый лист в excel
Менее распространённый способ создать лист в excel — это добавить новый лист в эксель через меню. Для этого на вкладке «Главная» нужно найти Группу «Ячейки», далее кликнуть на кнопку «Вставить» и выбрать «Вставить лист»:
Как вставить лист в эксель.
“
Shift + F11 – Горячая Клавиша для создания нового листа excel.
Как переименовать лист в excel
Когда лист только создается ему автоматически присваивается стандартное имя, которое содержит слово Лист и порядковый номер, например «Лист 1». Удобнее давать пользовательские названия листам excel. Переименование листов в excel очень легко делается через контекстное меню правой клавиши мыши. Т.е. кликаете правой клавишей мыши на название нужного Вам листа и выбираете «Переименовать». Затем введите желаемое имя и нажмите Enter:
Как переименовать лист в эксель.
Ещё один способ изменить название листа – это дважды кликнуть на его название, ввести имя и нажать Enter.
Третий наиболее редкий способ переименовать листы в экселе через меню. На вкладке «Главная» в группе «Ячейки» нужно нажать кнопку «Формат» и далее выбрать «Переименовать лист»:
Как переименовать лист в книге excel.
Отобразить листы в excel
Иногда при открытии файла Вы можете обнаружить, что пропали листы в excel. Расстраивается не стоит, скорее всего Вы легко сможете снова отобразить свои листы эксель.
Сначала нужно разобраться пропали вкладки с листами или Вы не можете найти только часть листов.
Пропали некоторые листы в excel
Если в эксель пропали не все листы, то в первую очередь убедитесь, что нужный Вам лист не за зоной видимости вкладок.
Для этого на клавишах переключения между вкладками нажмите правой клавишей мыши и увидите список всех не скрытых листов книги:
Как в экселе отобразить листы.
При наличии в этом списке нужных Вам листов, можете из этого списка переходить к ним.
Если в эксель пропали не все вкладки листов и в списке листов их нет, то нужно проверить скрытые листы. Отобразить скрытые листы в эксель можно, нажав правой клавишей мыши на любой видимый лист, и выбрав Показать… в контекстном меню:
Как в экселе отобразить скрытые листы.
Далее просто выбираете какие листы отобразить и нажимаете Ok.
Если в контекстном меню все операции с листами недоступны, то скорее всего используется защита книги, ее нужно отключать. Как пользоваться защитой в эксель мы расскажем в следующих статьях.
В экселе пропали все вкладки с листами
Когда в экселе пропали все вкладки с листами проверьте границу между горизонтальной полосой прокрутки и списком листов. Обычно достаточно сдвинуть границу вправо:
Как в экселе увидеть листы.
Если файл сохранялся на другом компьютере, то вкладке могут быть не видны из-за разных разрешений экрана, в этом случае просто разверните файл:
Отображение окна excel на весь экран.
Если вкладки листов пропали после восстановление excel, то возможно несколько окон перекрывают друг друга. В этом случае нужно на вкладке «Вид» нажать «Упорядочить все», выбрать «Рядом» и нажать Ok:
Еще одной причиной когда в экселе нет листов – это получение файла из другой версии или даже другой программы, например 1С. Включить листы в этом случае можно в настройках. На вкладке «Файл» открываем «Параметры».
Затем в пункте «Дополнительно» убедитесь, что в разделе «Показать параметры для следующей книги» установлен флажок «Показывать ярлычки листов»:
Как в экселе включить листы.
Как удалить лист в эксель
Перед тем как удалить лист в экселе убедитесь, что эти листы лишние. Дело в том, что отменить удаление листа в excel – нельзя (единственный способ не сохранить изменения). Удалить лист в excel можно нажав на нем правой клавишей мыши и выбрать «Удалить»:
Ещё один способ удаления листа — на вкладке «Главная» найти Группу «Ячейки», далее кликнуть на кнопку «Удалить» и выбрать «Удалить лист»:
Как удалить листы в книге excel.
Как распечатать в экселе на одном листе
Как правило печать огромной таблицы в несколько тысяч строк на одном листе не требуется хотя и возможна.
Чаще всего в эксель требуется печать сравнительно небольшого участка, например нужна печать на одном листе одной таблицы или графика.
В статье «6 Основных приёмов в работе с таблицами» мы подробно описывали «Как напечатать таблицу в excel». Там Вы сможете найти всю необходимую информацию.
Как копировать листы в excel
Часто бывает удобно сделать копию листа в excel, например получился хороший отчет за текущий месяц, и Вы хотите его сделать шаблоном.
Чтобы дублировать лист в excel нужно удерживая нужный лист левой клавишей мыши зажать Ctrl, перетащить его в желаемое место и продолжая держать Ctrl отпустить мышь.
Как в экселе дублировать лист.
Еще один способ создать копию листа в excel – это на названии нужного листа нажать правой клавишей мыши и выбрать «Переместить или скопировать…», затем нужно убедится, что в списке файлов выбран нужный, а также поставить флажок «Создать копию»:
Делать копию листа в excel обычно удобнее, копирования ячеек на другой лист. Например, сохраняется форматирование размеров ячеек, Диаграммы привязываются к новому листу-копии и др.
Сохранить лист excel в отдельный файл
Копированием можно сохранить лист excel в отдельный файл. Для этого на названии нужного листа необходтмо нажать правой клавишей мыши и выбрать «Переместить или скопировать…», затем выбрать нужный файл или «(новая книга)» для создания нового файла, а также поставить флажок «Создать копию» (без флажка произойдет не копирование, а перемещение листа):
Как сохранить лист эксель в отдельный файл.
Такие операции, как копирование, перемещение, удаление, скрытие и т.п. можно выполнять сразу с несколькими листами. Например для удаления двух листов их предварительно нужно выбрать оба, удерживая Ctrl, затем выбрать удалить в контекстном меню правой клавиши.
Ещё у нас есть online курс Функции и форматирование, пройдя который Вы получите практические навыки в работе с самыми востребованными функциями Excel.