Выбор всех видимых листов в макросе (Microsoft Excel)
В 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 [Выбор всех видимых листов в макросе]
.