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: วิธีแทรกหลายบรรทัด