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