Vba: hapus lembar jika nama berisi teks tertentu


Anda bisa menggunakan sintaks berikut di VBA untuk menghapus setiap lembar di buku kerja Excel yang berisi teks tertentu:

 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

Saat Anda menjalankan makro khusus ini, kotak input akan muncul di mana Anda dapat memasukkan string teks tertentu.

Setelah Anda menekan Enter, setiap lembar di buku kerja Excel yang berisi teks tertentu akan dihapus secara otomatis.

Catatan : Baris Application.DisplayAlerts=False memberitahu VBA untuk tidak menampilkan proses penghapusan sheet, sehingga mempercepat eksekusinya.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Gunakan VBA untuk menghapus lembar yang berisi teks tertentu

Misalkan kita memiliki buku kerja Excel berikut yang berisi empat lembar:

Sekarang katakanlah kita ingin menghapus setiap sheet yang memiliki “Tim” di nama sheetnya.

Kita dapat membuat makro berikut untuk melakukan ini:

 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

Saat kita menjalankan makro ini, kotak input muncul di mana kita bisa memasukkan teks yang ingin kita cari di nama sheet:

Setelah kita mengetik “Tim” dan menekan OK , nama sheet yang berisi “Tim” di mana pun dalam namanya akan otomatis terhapus:

Perhatikan bahwa dua lembar dengan “Tim” di nama lembarnya telah dihapus.

Lembar apa pun yang tidak berisi “Tim” tidak disentuh.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di VBA:

VBA: Cara menghitung jumlah lembar dalam buku kerja
VBA: Cara mengekstrak data dari buku kerja lain
VBA: cara menyisipkan banyak baris

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *