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

เมื่อเราเรียกใช้แมโครนี้ ช่องป้อนข้อมูลจะปรากฏขึ้นโดยที่เราสามารถป้อนข้อความที่เราต้องการค้นหาในชื่อแผ่นงาน:

เมื่อเราพิมพ์ “Team” แล้วกด OK ชื่อชีตที่มี “Team” อยู่ในชื่อจะถูกลบโดยอัตโนมัติ:

โปรดทราบว่าแผ่นงานสองแผ่นที่มี “ทีม” ในชื่อแผ่นงานได้ถูกลบออกแล้ว

แผ่นงานใด ๆ ที่ไม่มี “ทีม” จะถูกปล่อยทิ้งไว้โดยไม่มีใครแตะต้อง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีนับจำนวนแผ่นงานในสมุดงาน
VBA: วิธีดึงข้อมูลจากสมุดงานอื่น
VBA: วิธีแทรกหลายบรรทัด

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *