Event (อีเว้นท์) หมายถึงเหตุการณ์ใด ๆ ที่เกิดขึ้น ซึ่งใน Excel มีเหตุการณ์เช่นนี้ซึ่งติดมากับ Excel อยู่แล้วมากมาย เช่น การเลือกเซลล์ การเปลี่ยนแปลงค่าในเซลล์ การคลิกชีต การเปิดไฟล์ใหม่ ฯลฯ เราสามารถนำ Event นี้ไปใช้ในการทำงานอื่นต่อได้ เช่น ถ้าเซลล์ A1 มีการเปลี่ยนแปลงให้ส่งอีเมลไปแจ้งผู้เกี่ยวข้องเพื่อทราบว่ามีสิ่งใดเกิดขึ้น
Event ที่ว่านี้สามารถเขียนขึ้นมาเองได้เช่นกัน แต่จะต้องมีความรู้ในเรื่อง Programming เป็นอย่างดี เพราะแม้แต่นักพัฒนาทั้งหลายก็มักจะพบกับความยุุ่งยากสับสนเมื่อต้องสร้าง Event ขึ้นมาใช้เองเช่นกัน
คำถามที่ว่าจำเป็นที่ต้องสร้างขึ้นมาเองหรือไม่ คำตอบคือไม่จำเป็น แต่ถ้าสร้างขึ้นมาใช้เองได้จะก่อให้เกิดประโยชน์สูงสุด เพราะนั่นหมายถึงว่าเราต้องมีความรู้ด้าน Programming มาเป็นอย่างดี จะทำงานใดก็ย่อมได้
ยกตัวอย่างการใช้ Event ในเชิงการเขียนโปรแกรมที่สามารถเข้าใจไม่ยากเช่น เมื่อมีการคำนวณในเรื่องใด ๆ แล้วให้บันทึกเหตุการณ์นั้น ๆ ว่าเกิดจากเซลล์ใด ชีตใด กระทำกับค่าใด เวลาใด ได้ผลเป็นเท่าใด บันทึกเอาไว้ให้เราติดตามการเปลี่ยนแปลงได้ในภายหลัง เช่นนี้เป็นต้น
ตัวอย่างที่จะนำเสนอและข้อความต่อไปนี้เหมาะกับผู้ที่มีประสบการณ์ในการเขียนโปรแกรมมาบ้าง สำหรับผู้ที่ไม่เคยเขียนโปรแกรมมาก่อนจะเข้าใจยากกว่าปกติ
เพื่อให้เห็นภาพของ Event และเข้าใจได้ง่ายขึ้น จะยกตัวอย่าง Event โดยสิ่งที่ต้องมีสำหรับการจัดการงานนี้คือ
- Module ในที่นี้คือ Module1
- Class ต้นทางก่อกำเนิด Event ในที่นี้คือ Class1
- Class ที่กำหนดค่า Event ให้เป็น Class ตามข้อ 2 และดักจับ Event ของ Class ตามข้อ 2 ในที่นี้คือ Class2
Requirement และการทำงาน
- ใน Sheet1 คอลัมน์ E ต้องการหาค่า Price ซึ่งเกิดจากคอลัมน์ D หารด้วยคอลัมน์ C ดังภาพที่ 1
- ใน Module 1 เขียน Code เพื่อ Loop แต่ละรายการในคอลัมน์ B ไปจัดการต่อใน Class2 ดังภาพที่ 2
- ที่ Class2 กำหนดตัวแปร CalPrice โดยให้คำสำคัญว่า WithEvents เพื่อจะบอกว่า เราจะดักจับ Event ที่เกิดจาก Class1 พร้อมบอกให้ Class1 ไปคำนวณ Price มาด้วย ดังภาพที่ 3
- Class1 เป็นผู้ก่อกำเนิด Event เพื่อให้ Class2 ดักจับได้ ใช้คำสำคัญว่า Event ตามด้วยชื่อ Event จากนั้นทำการคำนวณค่าที่ได้รับมา แล้วแนบค่านั้นไปกับ Event โดยใช้คำสำคัญว่า RaisEvent
อีกนัยหนึ่งคือ เมื่อเกิดการคำนวณจะมี Event ให้ดักจับเพื่อไปทำงานต่อได้ ดังภาพที่ 4 ข้อนี้ให้ดูร่วมกับภาพในข้อ 3 จะเห็นว่ามีการดักจับ Event เอาไว้ ความหมายโดยย่อคือ ถ้ามี Event นั้นจะทำการบันทึกว่ามีการเปลี่ยนแปลงที่เซลล์ใด ชีตใด ได้ค่าเป็นเท่าใด
กรณีมีปัญหาการใช้งาน Excel and VBA สามารถสอบถามได้ที่ Excel Forum