การห้ามย้ายเซลล์ (Drag) เฉพาะไฟล์ที่กำลังใช้งาน ของ Excel
ปัญหา ปกติเมื่อมีการเรียกใช้งาน Application.CellDragAndDrop = False จะทำให้ ไฟล์ของ Excel ทุกไฟล์ หรือ ทุก Workbook ที่เปิดใช้งาน ไม่สามารถ ลากเซลลไปวางไว้ที่ไหนได้ ถ้าต้องการห้ามเฉพาะไฟล์ หรือ Workbook ที่กำลังใช้งาน หรือ Active Workbook เท่านั้น จะทำอย่างไร หลักการ คำสั่งดังกล่าว เป็นระดับ Application จึงมีผลต่อทุกไฟล์ที่เปิด ถ้าต้องการบังคับเฉพาะไฟล์ หรือเฉพาะ Workbook จึงต้องมีวิธีการ กำหนดให้บังคับเฉพาะชื่อไฟล์ที่ระบุเท่านั้น วิธีการ เปิดไฟล์ใหม่ บันทึกเป็นไฟล์ xlsm โดยใช้ชื่อ noDrag เปิดหน้าจอเขียนโค้ด (Alt + F11) สร้างโมดูลใหม่ โดยไปที่ Insert > Module Excel จะตั้งชื่อให้เป็น Module1 ให้คัดลอกโค้ดนี้ไปวาง Dim X As New Class1 Sub InitializeApp() ' Called by Workbook_Open Set X.App = Application End Sub สร้าง Class Module ใหม่ โดยไปที่ Insert > Class Module Excel จะตั้งชื่อว่า Class1 ให้ใช้ชื่อนี้ จะได้ไม่ต้องไปเปลี่ยนในโค้ด คัดลอกโค้ดต่อไปนี้ ลงใน Class1 Public WithEvents App As Application Private Sub App_WorkbookActivate(ByVal Wb As Workbook)