Vba: วิธีตรวจสอบว่ามีชีตอยู่หรือไม่ (พร้อมตัวอย่าง)
คุณสามารถสร้างฟังก์ชันต่อไปนี้ใน VBA เพื่อตรวจสอบว่ามีแผ่นงานใดอยู่ในสมุดงาน Excel ที่ใช้งานอยู่ในปัจจุบันหรือไม่:
Function sheetExists(some_sheet As String) As Boolean
On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)
End Function
ฟังก์ชันนี้จะส่งคืน ค่า TRUE หรือ FALSE เพื่อระบุว่ามีชื่อแผ่นงานเฉพาะอยู่ในสมุดงาน Excel ที่ใช้งานอยู่ในปัจจุบันหรือไม่
โปรดทราบว่าฟังก์ชันนี้จะตรวจสอบว่าหมายเลขดัชนีของชีตมากกว่า 0 หรือไม่
หากมีชีตอยู่ หมายเลขดัชนีชีตจะมีค่าเป็นอย่างน้อย 1 ทำให้ฟังก์ชันส่งคืนค่า TRUE
ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ
ตัวอย่าง: ใช้ VBA เพื่อตรวจสอบว่ามีแผ่นงานอยู่หรือไม่
สมมติว่าเรามีสมุดงาน Excel ต่อไปนี้ซึ่งมีสามแผ่น:

เราสามารถสร้างฟังก์ชันต่อไปนี้ใน VBA เพื่อตรวจสอบว่ามีชื่อแผ่นงานเฉพาะอยู่ในสมุดงานนี้หรือไม่:
Function sheetExists(some_sheet As String) As Boolean
On Error Resume Next
sheetExists = (ActiveWorkbook.Sheets(some_sheet).Index > 0)
End Function
จากนั้นเราสามารถพิมพ์สูตรต่อไปนี้ในเซลล์ A1 ของแผ่นงานที่ใช้งานอยู่ในปัจจุบันเพื่อตรวจสอบว่าชื่อแผ่นงาน “ทีม” มีอยู่ในสมุดงานนี้หรือไม่:
=sheetExists("Teams")
ภาพหน้าจอต่อไปนี้แสดงวิธีใช้สูตรนี้ในทางปฏิบัติ:

ฟังก์ชันส่งคืน TRUE เนื่องจากชื่อแผ่นงานนี้มีอยู่ในสมุดงาน
โปรดทราบว่าฟังก์ชันนี้ไม่คำนึงถึงขนาดตัวพิมพ์
ตัวอย่างเช่น หากเราตรวจสอบว่ามีชื่อชีต “ทีม” อยู่หรือไม่ ฟังก์ชันก็จะส่งคืน TRUE :

อย่างไรก็ตาม สมมติว่าเราตรวจสอบว่ามีชื่อชีต “โค้ช” อยู่หรือไม่:

ฟังก์ชันส่งคืน FALSE เนื่องจากไม่มีชื่อชีตนี้ในสมุดงาน
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีนับจำนวนแผ่นงานในสมุดงาน
VBA: วิธีดึงข้อมูลจากสมุดงานอื่น
VBA: วิธีแทรกหลายบรรทัด