Vba: как проверить, существует ли лист (с примером)
Вы можете создать следующую функцию в VBA, чтобы проверить, существует ли определенный лист в активной в данный момент книге Excel:
Function sheetExists(some_sheet As String) As Boolean
On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)
End Function
Эта функция вернет TRUE или FALSE , чтобы указать, существует ли определенное имя листа в активной в данный момент книге Excel.
Обратите внимание, что эта функция просто проверяет, превышает ли индексный номер листа 0.
Если лист существует, индексный номер листа будет иметь значение как минимум 1 , в результате чего функция вернет значение TRUE .
В следующем примере показано, как использовать эту функцию на практике.
Пример. Используйте VBA, чтобы проверить, существует ли лист.
Предположим, у нас есть следующая книга Excel с тремя листами:
Мы можем создать в VBA следующую функцию, чтобы проверить, существует ли определенное имя листа в этой книге:
Function sheetExists(some_sheet As String) As Boolean
On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)
End Function
Затем мы можем ввести следующую формулу в ячейку A1 текущего активного листа, чтобы проверить, существует ли имя листа «Команды» в этой книге:
=sheetExists("Teams")
На следующем снимке экрана показано, как использовать эту формулу на практике:
Функция возвращает TRUE , поскольку это имя листа существует в книге.
Также обратите внимание, что эта функция не чувствительна к регистру.
Например, если мы проверим, существует ли имя листа «команды», функция также вернет TRUE :
Однако предположим, что мы проверяем, существует ли имя листа «тренеры»:
Функция возвращает FALSE , поскольку имя этого листа не существует в книге.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как посчитать количество листов в книге
VBA: как извлечь данные из другой книги
VBA: как вставить несколько строк