Vba: как посчитать количество листов в книге
Для подсчета количества листов в книге Excel можно использовать следующие методы:
Способ 1. Подсчитайте количество листов в активной книге.
SubCountSheetsActive ()
Range(" A1 ") = ThisWorkbook.Worksheets.Count
End Sub
Способ 2: подсчитать количество листов в открытой книге
SubCountSheetsOpen ()
Range(" A1 ") = Workbooks(" my_data.xlsx ").Sheets.Count
End Sub
Способ 3: подсчитайте количество листов в закрытой папке
SubCountSheetsClosed ()
Application.DisplayAlerts = False
Set wb = Workbooks.Open(" C:\Users\Bob\Desktop\my_data.xlsx ")
'count sheets in closed workbook and display count in cell A1 of current workbook
ThisWorkbook.Sheets(1).Range(" A1 ").Value = wb.Sheets.Count
wb.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
Следующие примеры показывают, как использовать каждый из этих методов на практике.
Пример 1. Подсчет количества листов в активной книге.
Допустим, у нас открыта следующая книга Excel, и мы просматриваем ее:
Мы можем использовать следующий макрос, чтобы подсчитать общее количество листов в этой книге и отобразить число в ячейке A1:
SubCountSheetsActive ()
Range(" A1 ") = ThisWorkbook.Worksheets.Count
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка A1 содержит значение 6 .
Это говорит нам о том, что в этой книге 6 листов.
Пример 2. Подсчитайте количество листов в открытой подшивке.
Допустим, у нас есть книга Excel под названием my_data.xlsx с двумя открытыми листами, но в данный момент мы ее не просматриваем.
Мы можем использовать следующий макрос, чтобы подсчитать общее количество листов в этой книге и отобразить число в ячейке A1 активной книги:
SubCountSheetsOpen ()
Range(" A1 ") = Workbooks(" my_data.xlsx ").Sheets.Count
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка A1 содержит значение 2 .
Это говорит нам о том, что в открытой книге есть 2 листа с именем my_data.xlsx .
Пример 3: Подсчет количества листов в закрытой подшивке
Допустим, у нас есть книга Excel с именем my_data.xlsx с двумя листами, которые в данный момент не открыты, но расположены в следующем расположении файла:
C:\Users\Bob\Desktop\my_data.xlsx
Мы можем использовать следующий макрос, чтобы подсчитать общее количество листов в этой книге и отобразить число в ячейке A1 первого листа активной книги:
SubCountSheetsClosed ()
Application.DisplayAlerts = False
Set wb = Workbooks.Open(" C:\Users\Bob\Desktop\my_data.xlsx ")
'count sheets in closed workbook and display count in cell A1 of current workbook
ThisWorkbook.Sheets(1).Range(" A1 ").Value = wb.Sheets.Count
wb.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка A1 содержит значение 2 .
Это говорит нам о том, что в закрытой книге есть 2 листа с именем my_data.xlsx .
Примечание . В коде Application.DisplayAlerts=False сообщает VBA не отображать процесс открытия закрытой книги, подсчета листов и последующего закрытия книги.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как подсчитать количество строк в диапазоне
VBA: как подсчитать ячейки с определенным текстом
VBA: как писать функции COUNTIF и COUNTIFS