Може да има време, когато трябва да проверите дали съществува работен лист, който сте създали или изтрили в работна книга във 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.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим, допълним или обновим работата си и да я подобрим. Пишете ни на имейл сайта