Было время, когда вам нужно было проверить, существует ли рабочий лист, который вы создали или удалили в книге с помощью макроса / кода VBA. Мы можем легко сделать это с помощью функции / макроса. Есть несколько способов проверить, существует ли рабочий лист .

В этой статье мы рассмотрим следующие способы:

{пусто} 1. Определяемая пользователем функция, известная как UDF 2. Подпрограмма через окно сообщения

Первый вариант: функция, определяемая пользователем

Следующий снимок содержит несколько имен листов, и мы проверим, существуют ли имена листов в столбце A.

img1

Чтобы узнать, существует ли конкретный лист, нам нужно выполнить следующие шаги, чтобы запустить редактор VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img2

  • Скопируйте приведенный ниже код в стандартный модуль

Option Explicit

Function WorksheetExists(ByVal WorksheetName As String) As Boolean

Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets

If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

WorksheetExists = True

Exit Function

End If

Next Sht

WorksheetExists = False

End Function

img3

Для проверки мы будем использовать UDF в ячейке B2 как = WorksheetExists (A2)

img4

  • На изображении выше «MasterSheet» не существует в нашем образце книги; следовательно, формула дала ответ как Ложь

Пояснение к коду:

Эта функция принимает значение для «WorksheetName» из макроса, который выполняет другие действия. Если вам нужно изменить его в соответствии с вашим кодом, вы можете.

For Every Sht In ThisWorkbook.Worksheets и Next Sht — начальная и конечная части цикла соответственно.

Затем If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then _ WorksheetExists = True_ Проверяет, совпадает ли имя листа с именем листа, переданным из основного макроса. Если это так, WorksheetExists имеет значение True, и мы можем выйти из функции. В противном случае в основной макрос возвращается WorksheetExists = False. Цикл переходит от 1-го листа к следующему, пока не будут проверены все листы.

Второй вариант: подпрограмма через окно сообщения

У нас может быть обычная подпрограмма, которая вызывает UDF, и, если указанный лист найден, в окне сообщения будет отображаться «лист существует»; если не найден, то появится сообщение «лист не найден».

Для проверки скопируем в стандартный модуль следующий код:

Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean

If wb Is Nothing Then Set wb = ThisWorkbook

With wb

On Error Resume Next

WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName)

On Error GoTo 0

End With

End Function

Sub FindSheet()

If WorksheetExists2("Sheet1") Then

MsgBox "Sheet1 is in this workbook"

Else

MsgBox "Oops: Sheet does not exist"

End If

End Sub

img5

После запуска макроса «FindSheet» мы получим следующее окно сообщения, если лист существует:

img6

Если Sheet не существует, мы получим следующее сообщение:

img7

Точно так же у нас может быть простой цикл IF, который проверяет, существует ли лист, и после этого выполняет определенные действия.

Sub test()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.Name <> "Main" Then

ws.Range("A1").Value = ws.Name

Else

ws.Range("A1").Value = "MAIN LOGIN PAGE"

End If

Next ws

End Sub

img8

Чтобы протестировать вышеуказанный макрос, нам нужно создать лист с именем «Main». Этот макрос очень прост. Он просматривает каждый рабочий лист в книге. Затем он проверяет, не является ли имя рабочего листа ГЛАВНЫМ. Если это ГЛАВНЫЙ, он отображает текст, например «ГЛАВНАЯ СТРАНИЦА ВХОДА» в A1 этого листа, в противном случае он отображает имя лист в ячейке A1

img9

Это просто еще один способ проверить, существует ли лист. Если он существует, выполните действие A, если нет, действие B Заключение: * Мы можем определить, существует ли лист в нашей книге или нет; мы можем использовать UDF или подпрограмму по нашему усмотрению.

image 48

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]