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

Онлайн-справка Excel предлагает использовать функцию Array с коллекцией Sheets для выбора листов по имени. Это отлично работает, когда вы знаете названия каждого листа в книге. Это создает проблему, если вы хотите создать общий код для выбора всех листов для любой книги. Хорошей новостью является то, что вы можете использовать вариант техники Microsoft для ссылки на листы по порядковому номеру. Ниже приведен код:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     For i = 1 To Sheets.Count         ReDim Preserve myArray(i - 1)

myArray(i - 1) = i     Next i     Sheets(myArray).Select End Sub

Это отлично работает, если книга не содержит скрытых листов, где Sheets (i) .Visible = False. Конечно, приведенный выше код может быть адаптирован для игнорирования скрытых листов:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     Dim j As Integer     j = 0     For i = 1 To Sheets.Count         If Sheets(i).Visible = True Then             ReDim Preserve myArray(j)

myArray(j) = i             j = j + 1         End If     Next i     Sheets(myArray).Select End Sub

Однако есть малоизвестный параметр метода Select: параметр Replace. При использовании параметра «Заменить» выбор всех видимых листов становится намного проще:

Sub SelectSheets1()

Dim mySheet As Object     For Each mySheet In Sheets         With mySheet             If .Visible = True Then .Select Replace:=False         End With     Next mySheet End Sub

Обратите внимание, что mySheet определяется как тип данных Object, а не как тип данных Worksheet. Это сделано потому, что при тестировании я столкнулся с проблемой с листами диаграмм — они не будут выбраны, потому что они не относятся к типу рабочего листа.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11600) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Selecting_All_Visible_Worksheets_in_a_Macro [Выбор всех видимых листов в макросе].