รหัส VBA ที่ยืดหยุ่นตามการเปลี่ยนแปลงใน Excel

เมื่อเปรียบเทียบโปรแกรม Excel กับ VBE ในเรื่องความยืดหยุ่นแล้วจะพบว่า รหัสทั่วไปที่เขียนลงไปใน VBE จะไม่ปรับตัวเองให้สอดคล้องกับโครงสร้างตารางในชีทที่เปลี่ยนไป จึงถือเป็นจุดอ่อนสำคัญ และส่งผลเสียทำให้เราต้องเสียเวลาย้อนกลับมาตามแก้ไขรหัสซ้ำแล้วซ้ำอีกอยู่เสมอ

ลองพิจารณารหัสที่ได้จากการใช้ Macro Recorder บันทึกการไล่คลิกหาแฟ้ม ต่อด้วยคลิกหาชีท แล้วคลิกหาเซลล์ที่ต้องการพิมพ์เลข 123 ลงไป

Windows("Book1.xls").Activate
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "123"

จะพบว่า กว่าจะกำหนดตำแหน่งเซลล์ A1 ที่ต้องการ จะต้องระบุชื่อแฟ้มและชื่อชีทลงไปในตัวรหัส แล้วต่อมาถ้าเซลล์เก็บข้อมูลถูกย้ายไปเซลล์อื่นแทน A1 จะส่งผลให้รหัสชุดนี้ไม่ทำงานตามเดิม

นอกจากรหัสที่ได้จาก Recorder แล้ว รหัสที่เขียนขึ้นเอง เพื่อทำหน้าที่เช่นเดียวกับชุดรหัสข้างต้น แม้มีรหัสสั้นลงเหลือเพียงบรรทัดเดียว แต่ยังจำเป็นต้องระบุชื่อแฟ้ม ชื่อชีท และตำแหน่งเซลล์ ซึ่งเป็นเหตุให้ไม่ยืดหยุ่นเช่นกัน

Workbooks("Book1.xls").
Worksheets("Sheet1").Range("A1") = 123

ขอให้สังเกตว่า รหัสที่ได้จาก Recorder และรหัสที่เขียนเองนี้ แม้จะทำให้ได้ค่า 123 ใส่ลงไปในเซลล์ A1 ได้เช่นเดียวกันก็ตาม แต่รหัสที่เขียนเองจะช่วยส่งเลข 123 ลงไปในเซลล์ A1 ให้โดยไม่จำเป็นต้องย้ายไปเลือกเซลล์ A1 ส่งผลให้ Excel ทำงานได้เร็วขึ้นด้วย เนื่องจากไม่ต้องเสียเวลาเลือกเซลล์ซึ่งเกิดจากคำสั่ง Select

Related Articles

© Copyright 1999

สงวนลิขสิทธิ์ตามกฎหมาย

ห้ามนำข้อความหรือส่วนหนึ่งส่วนใดของบทความหรือวิดีโอหรือรูปภาพไปใช้เพื่อการค้าขาย หรือเพื่อประโยชน์ส่วนตัว

อนญาตให้นำไปใช้เพื่อสาธารณประโยชน์โดยขอให้ระบุที่มาและชื่อผู้เขียนกำกับไว้ด้วยเสมอ

ลิงก์เว็บ Excel Expert Training

เว็บสำหรับ เรียนออนไลน์

เว็บสำหรับ เรียนแบบกลุ่ม-ส่วนตัว

ติดตามข่าวสารได้จาก facebook

ถามปัญหาได้ที่ กลุ่มคนรัก Excel

และไลน์กลุ่ม Excel Expert Group

ที่อยู่และการติดต่อ

สมเกียรติ ฟุ้งเกียรติ 7/1 รามคำแหง ซอย 35 หัวหมาก บางกะปิ กทม 10240 โทร 097-140-5555, 02-718-9331

Excel@ExcelExpertTraining.com

sfk234x234