จับความยืดหยุ่นใส่ vba
Home

จับความยืดหยุ่นมาใส่ vba

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

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

ขนาดโปรแกรมเมอร์เองด้วยกัน เวลารับงานต่อจากโปรแกรมเมอร์คนก่อน ยังไม่อยากจะแกะรหัส นำรหัสของคนก่อนๆมาแก้ไข ส่วนใหญ่คนใหม่จะเขียนรหัสครอบรหัสเก่าลงไป ตัดการทำงานของเก่าส่วนนั้นๆทิ้งไป แล้วกำหนดให้รหัสใหม่ของตนทำงานแทน

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

ลองเปรียบเทียบรหัสคำสั่งต่อไปนี้ดูเอง ทั้งคู่ใช้ macro recorder บันทึกเหมือนกัน

รหัสแบบไม่ยืดหยุ่น

Range("A3").Select
ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C"

รหัสแบบยืดหยุ่น

Application.Goto Reference:="MyAnswer"
ActiveCell.FormulaR1C1 = "=MyCell1+MyCell2"

ตัวอย่างข้างบนนี้ เป็นการไปที่เซลล์ A3 แล้วสร้างสูตรคำนวณว่า =A1+A2 แต่มีวิธีใช้รหัสต่างกันในประเด็น การใช้ตำแหน่งเซลล์ กับ การใช้ range name แทนการใช้ตำแหน่งเซลล์โดยตรง

ต่อไปสมมติว่ามีการย้ายตำแหน่งเซลล์ทั้ง A1, A2, และ A3 ไปยังเซลล์อื่น ทั้งตัวรหัสแบบไม่ยืดหยุ่นและแบบยืดหยุ่นก็ยังคงสภาพตามเดิมทั้งคู่ แต่จะพบว่ามีเฉพาะตัวรหัสแบบยืดหยุ่นเท่านั้น ซึ่งยังคงทำงานได้ตามที่เราต้องการ

เมื่อมีการย้ายตำแหน่งเซลล์ในตาราง ส่งผลให้ Excel จัดการย้ายตำแหน่งซึ่งกำกับไว้ในชื่อ range name ให้เองโดยอัตโนมัติ รหัสใน vba จึงยังคงทำงานได้เหมือนเดิม

นี่เป็นเพียงตัวอย่างเพียงส่วนเดียวซึ่งนำความยืดหยุ่นของ Excel มาใช้กับ vba ยิ่งรู้จักเลือกใช้คำสั่งเมนูใน Excel มาทำงานร่วมกับ vba มากขึ้นเพียงใด ยิ่งทำให้รหัส vba มีความยืดหยุ่นมากขึ้นเท่านั้น

Home

 

เอกสารประกอบหลักสูตร Excel Expert Training   
http://www.tpa.or.th/xlsiam     http://xls.i.am

11/11/2544