Vba: видалити аркуш, якщо ім’я містить певний текст
Ви можете використовувати такий синтаксис у VBA, щоб видалити кожен аркуш у книзі Excel, який містить певний текст:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Коли ви запускаєте цей конкретний макрос, з’являється поле введення, де ви можете ввести певний текстовий рядок.
Після натискання клавіші Enter кожен аркуш у книзі Excel, що містить певний текст, буде автоматично видалено.
Примітка . Рядок Application.DisplayAlerts=False повідомляє VBA не відображати процес видалення аркушів, що пришвидшує його виконання.
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: використовуйте VBA для видалення аркушів, що містять певний текст
Припустимо, що у нас є така книга Excel, яка містить чотири аркуші:
Тепер припустімо, що ми хочемо видалити кожен аркуш, який містить «Команда» в назві аркуша.
Для цього ми можемо створити такий макрос:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Коли ми запускаємо цей макрос, з’являється поле введення, де ми можемо ввести текст, який ми хочемо шукати в назвах аркушів:
Коли ми введемо «Команда» та натиснемо «ОК» , назви аркушів, які містять «Команда» будь-де в назві, будуть автоматично видалені:
Зауважте, що два аркуші з «Команда» в назві аркуша видалено.
Будь-які аркуші, які не містили «Команда», залишалися недоторканими.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:
VBA: Як підрахувати кількість аркушів у робочій книзі
VBA: як отримати дані з іншої книги
VBA: як вставити кілька рядків