Function และ Sub ความแตกต่างคือ
Function เป็นการทำงานย่อยที่ (ควรจะ) ส่งค่าแบบ ByVal (ส่งค่าของตัวแปรเข้าไป ถ้ามีการเปลี่ยนค่าระหว่างทำงาน ตัวแปรต้นทางจะไม่เปลี่ยน) และเมื่อทำงานเสร็จเรียบร้อยก็ (ควรจะ) ส่งค่าคืนกลับมา เช่นหรือถ้าจะแหกฎนั้น
สังเกตว่าต้องมีการคืนค่าเสมอนะครับ (แม้จะเขียนโดยที่ไม่ให้คืนค่าก็ตาม)
ส่วนการใช้
Sub จะถูกมองคล้ายๆ การแยกส่วนของ code ออกเป็นหลายๆ ส่วน ตัวแปรส่วนใหญ่ส่งเข้าไปแบบ ByRef (เมื่อเปลี่ยนค่าตัวแปร ตัวแปรที่ต้นทางจะเปลี่ยนด้วย) และเมื่อทำงานเสร็จจะไม่มีการคืนค่าครับความแตกต่างอีกอย่างคือการที่
Sub สามารถ Handles เหตุการณ์ต่างๆ เช่นการคลิกเมาส์ได้ โดยเปลี่ยนไปส่งผ่านตัวแปรที่เกี่ยวกับ event 2 ตัวแทน (ซึ่งจะเหมือนกับการดับเบิลคลิกเข้าไปเขียน code) ดังนี้(อันที่จริงแล้ว
Function ก็ Handles ได้ แต่มักไม่ทำกัน เพราะผิด concept)สรุปคือตัดสินใจจากสถานการณ์นั้นๆ ว่าจะใช้
Function (มีการคืนค่า) หรือจะใช้ Sub (จัดระเบียบ code, อิงกับ event ภายนอก) ให้เหมาะกับงานด้วยนะครับ
โค้ดรองสุดท้ายน่าจะผิดนะ ถ้าเป็น Function ก็ต้องมี Return ครับ
ReplyDelete