Определете дали лист съществува в работна книга, използвайки VBA в Microsoft Excel

Anonim

Може да има време, когато трябва да проверите дали съществува работен лист, който сте създали или изтрили в работна книга във VBA макрос / код. Можем да направим това лесно с помощта на функция / макрос. Има няколко начина да проверите дали съществува работен лист.

В тази статия ще разгледаме следните начини:

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

Първа опция: Потребителска функция

Следващата снимка съдържа няколко имена на листове и ще проверим дали имената на листа в колона А съществуват.

За да разберем дали съществува конкретен лист, трябва да следваме стъпките по -долу, за да стартираме VB редактор

  • Кликнете върху раздела Разработчик
  • От групата кодове изберете Visual Basic

  • Копирайте кода по -долу в стандартния модул
Вариант Изрично Функционални WorksheetExists (ByVal WorksheetName низ) Както Булева Дим Щ. Като лист за всеки Щ. В ThisWorkbook.Worksheets Ако Application.Proper (Sht.Name) = Application.Proper (WorksheetName), след това WorksheetExists = True Exit крайна функция, ако има следваща Sht WorksheetExists = Функция за фалшив край 

  • За да проверим, ще използваме UDF в клетка В2 като
  • = Работен лист Съществува (A2)

  • В горното изображение „MasterSheet“ не съществува в нашата примерна работна книга; следователно формулата е дала отговор като невярно

Код Обяснение:

Тази функция приема стойността за „WorksheetName“ от макроса, който изпълнява други дейности. Ако трябва да го промените според кода си, можете.

За всеки Sht в ThisWorkbook.Worksheets и Следващ Sht са съответно началната и крайната част на цикъла.

Тогава Ако Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Тогава

Работен лист Съществува = Вярно

Проверява дали името на листа съвпада с името на листа, предадено от основния макрос. Ако това стане, WorksheetExists е True и можем да излезем от функцията. В противен случай WorksheetExists = False се връща обратно към основния макрос. Цикълът преминава от 1 -ви лист към следващия, докато не бъдат проверени всички листове.

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

Можем да имаме нормална подпрограма, която извиква UDF и, ако се намери посочения лист, полето за съобщение ще покаже „лист съществува“; ако не е намерено, тогава се появява съобщение msgbox, „лист не е намерен“.

За да проверим, ще копираме следния код в стандартния модул:

Функция WorksheetExists2 (WorksheetName As String, незадължително wb като работна книга) Като булева стойност Ако wb не е нищо, тогава задайте wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) On Error GoTo 0 End With End Sub FindSheet () If WorksheetExists2 ("Sheet1") Тогава MsgBox "Sheet1 е в тази работна книга" Else MsgBox "Ами сега: Листът не съществува" End If End Sub 

След като стартираме макроса „FindSheet“, ще получим следното поле със съобщение, ако листът съществува:

Ако Sheet не съществува, ще получим следното поле за съобщение:

По подобен начин можем да имаме прост IF цикъл, който проверява дали листът съществува и изпълнява определени действия след това.

Sub test () Dim ws като работен лист за всеки ws в ThisWorkbook.Worksheets If ws.Name "Main" then ws.Range ("A1"). Value = ws.Name Else ws.Range ("A1"). Value = " ОСНОВНА СТРАНИЦА ЗА ВЛИЗАНЕ "Край, ако следващият ще завърши подм 

  • За да тестваме горния макрос, трябва да създадем име на лист „Main“. Този макрос е много прост
  • Той преминава през всеки работен лист в работната книга
  • След това проверява дали името на работния лист не е MAIN
  • Ако е MAIN, той показва текст, като „MAIN LOGIN PAGE“ в A1 на този лист, иначе показва името на листа в клетка A1

  • Това е просто друг начин да проверите дали листът съществува. Ако съществува, извършете действие A, ако не, действие B

Заключение: Можем да определим дали лист съществува в нашата работна книга или не; можем да използваме UDF или подпрограма според нашето удобство.

Ако ви харесаха нашите блогове, споделете го с приятелите си във Facebook. Можете също така да ни следвате в Twitter и Facebook.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим, допълним или обновим работата си и да я подобрим. Пишете ни на имейл сайта