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: как вставить несколько строк

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *