Определите, если лист существует в книге с помощью VBA в Microsoft Excel
Было время, когда вам нужно было проверить, существует ли рабочий лист, который вы создали или удалили в книге с помощью макроса / кода VBA. Мы можем легко сделать это с помощью функции / макроса. Есть несколько способов проверить, существует ли рабочий лист .
В этой статье мы рассмотрим следующие способы:
{пусто} 1. Определяемая пользователем функция, известная как UDF 2. Подпрограмма через окно сообщения
Первый вариант: функция, определяемая пользователем
Следующий снимок содержит несколько имен листов, и мы проверим, существуют ли имена листов в столбце A.
Чтобы узнать, существует ли конкретный лист, нам нужно выполнить следующие шаги, чтобы запустить редактор VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic
-
Скопируйте приведенный ниже код в стандартный модуль
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
Для проверки мы будем использовать UDF в ячейке B2 как = WorksheetExists (A2)
-
На изображении выше «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
После запуска макроса «FindSheet» мы получим следующее окно сообщения, если лист существует:
Если Sheet не существует, мы получим следующее сообщение:
Точно так же у нас может быть простой цикл 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
Чтобы протестировать вышеуказанный макрос, нам нужно создать лист с именем «Main». Этот макрос очень прост. Он просматривает каждый рабочий лист в книге. Затем он проверяет, не является ли имя рабочего листа ГЛАВНЫМ. Если это ГЛАВНЫЙ, он отображает текст, например «ГЛАВНАЯ СТРАНИЦА ВХОДА» в A1 этого листа, в противном случае он отображает имя лист в ячейке A1
Это просто еще один способ проверить, существует ли лист. Если он существует, выполните действие A, если нет, действие B Заключение: * Мы можем определить, существует ли лист в нашей книге или нет; мы можем использовать UDF или подпрограмму по нашему усмотрению.
Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]