Page 1 of 1

หลีกเลี่ยงการใช้ VBA

Posted: Tue Jan 10, 2012 1:53 pm
by bank9597
:D กระทู้อยากขอความคิดเห็นจากเพื่อนสมาชิก โดยเฉพาะอาจารย์ที่เคารพครับ

ผมได้ลองใช้ VBA ในการทำงานกับ Excel มีฟอร์มที่สร้างจาก Object VBA ค่อนข้างเยอะ จนงานเสร็จค่อนข้างสมบูรณ์
แต่เมื่อนำมาทดลองใช้จริงๆ มีปัญหาตามมาค่อนข้างเยอะ คิดว่าเกิดจากการไม่ชำนาญเรื่องโค๊ด จึงทำให้การทำงานของระบบเจอปัญหาเออร์เรอร์มากมาย ทั้งๆที่เคยทดสอบมาก่อนแล้วทั้งสิ้น

1. ปัญหาที่เจอส่วนใหญ่คือทำงานอยู่ พอจะเรียกฟอร์มมาแสดง ก็กลับไม่แสดงเสียเฉยๆ ทั้งๆที่ก่อนทำงานทุกอย่างก็ปกติ
2. ทุกครั้งที่ทำงานเสร็จ แล้วกดบันทึก ก็กลับบันทึกไม่ได้บ่อยมากๆ ต้องมานั่งทำงานเดิมใหม่

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

ผมได้ทดลองแล้ว เห็นแล้ว จึงนำสิ่งเหล่านี้มาร่วมแชร์กันครับ เผื่อใครที่คิดจะใช้ VBA ในการทำงาน ก็คงต้องศึกษาให้รู้ดีก่อนครับ หากยังไม่เก่งพอก็อย่าเพิ่งไปใช้เลยครับ :D

Re: หลีกเลี่ยงการใช้ VBA

Posted: Tue Jan 10, 2012 2:25 pm
by snasui
:D ผมย้ายหัวข้อมาที่ Talk แทนอยู่ในหมวด Excel ซึ่งเน้นถามตอบปัญหา :mrgreen:

กรณีที่คุณ Bank9597 ได้ประสบกับตัวเองและนำมาบอกกล่าวให้เพื่อน ๆ ได้ทราบนับว่าเป็นประโยชน์ครับ ในการทำงานกับ VBA คงหลีกเลี่ยงไม่ได้ที่จะเกิด Error ดังนั้นในหนังสือทุกเล่มที่มีความสมบูรณ์จะต้องมีเรื่องการจัดการกับสิ่งผิดพลาดเหล่านี้ที่เรียกว่า Error Trapping อยู่ด้วย ซึ่งผู้ที่ปรารถนาจะใช้งาน VBA ต้องทำใจที่จะพบเจอกับ Error ไม่อย่างใดก็อย่างหนึ่งอยู่อย่างแน่นอน ยกเว้นว่าจะใช้เพียงเล็ก ๆ น้อย ๆ ซึ่งจะไม่นำมารวมกล่าวกับประเด็นที่คุณ Bank9597 ยกขึ้นมานี้ ที่เป็นลักษณะของการตั้งใจจะใช้เพื่อสร้างงาน สร้างระบบงาน :mrgreen:

สำหรับการใช้งาน Microsoft Excel ได้อย่างราบรื่น ผมเห็นว่าควรใช้ความสามารถที่มีมาอย่างเต็มที่เสียก่อน นอกเหนือจากความสามารถเหล่านั้นค่อยไปใช้ VBA ครับ กรณีไหนทำด้วย Excel ได้หรือไม่ได้สามารถถามกันในฟอรัมได้เลย

หากจำเป็นต้องใช้ VBA ก็ให้เริ่มด้วยการบันทึก Macro เพื่อให้ได้ Code ที่ถูกต้องแล้วค่อยปรับใช้ ก็จะลดความผิดพลาดลงได้ กรณีที่ซับซ้อนมากขึ้นไปเช่นการ Loop จำเป็นต้องพึ่งพาการเขียน Code ขึ้นมาเอง เนื่องจากการบันทึก Macro ไม่สามารถจะ Loop ได้ จำเป็นที่จะต้องศึกษาโครงสร้างภาษา ศึกษา Object Oriented Programming (OOP) ตัวแปร คำสงวน ไวยากรณ์ การทำงานร่วมกับโปรแกรมอื่น ๆ ฯลฯ การศึกษาทีว่านี้ลำพังการอ่านอย่างเดียวไม่พอครับ ต้องลงมือทำจริงและต้องใช้ความพยายาม ใช้ความอดทนสูงถึงจะได้ผลครับ :P

Re: หลีกเลี่ยงการใช้ VBA

Posted: Tue Jan 10, 2012 2:50 pm
by bank9597
:D
ผมย้ายหัวข้อมาที่ Talk แทนอยู่ในหมวด Excel ซึ่งเน้นถามตอบปัญหา
ขออภัยด้วยน่ะครับ :D

สำหรับคำแนะนำที่อาจารย์ให้มา ชัดเจนมากครับ

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

หลังจากนี้ไปคงต้องขอคำแนะนำจากอาจารย์อีกแล้วล่ะครับ

ขอบคุณเป็นอย่างสูงสำหรับความเอื้อเฟื้อน่ะครับ :D

Re: หลีกเลี่ยงการใช้ VBA

Posted: Wed Jan 11, 2012 10:31 pm
by norkaz
คุณ bank ในรูปถือ ใบปริญญา ปกสีม่วงๆ ถ่ายรูปหน้า มหาวิทยาลัย จบ มช.ใช่ไหมครับ (ถ้าเดาไม่ผิด)
ผมเคยผ่านไปแถวๆนั้น ถ้าไม่ใช่ขออภัย ผมแก่แล้ว หลงๆลืมๆ แถมเลอะเลือนอีกต่างหาก

Re: หลีกเลี่ยงการใช้ VBA

Posted: Wed Jan 11, 2012 10:40 pm
by bank9597
:D ผมจบจากมหาวิทยาลัยวลัยลักษณ์ นครศรีธรรมราชครับ (เหนือกับใต้เลยน่ะนั่น อิอิ)

ส่วนที่บอกผิดนั้น ไม่เป็นไรครับ อิอิ (ว่าแต่บอกชื่อสถาบันไป เสียชื่อสถาบันหมด เพราะอ่อนโปรแกรมเหลือเกิน สถาบันผิดหวัง)

Re: หลีกเลี่ยงการใช้ VBA

Posted: Wed Jan 11, 2012 11:13 pm
by norkaz
ขอภัยครับ ผมแก่เลี้ยว ขออภัยอีกครั้ง เขียนผิด แก่แล้วครับ
มหาวิทยาลัยที่ผมเอ่ยถึงคง ให้อภัย ที่ผมพลาดเผลอไป

คุณ bank ใช่ว่าฝีมือธรรมดาที่ไหน มาช่วยตอบ ปัญหา ช่วยเหลือเพื่อนสมาชิกอยู่บ่อยๆ สถาบันที่คุณ bank สำเร็จการศึกษามาก็
คงภาคภูมิใจทีมี ศิษย์เก่าช่วยเหลือ สังคมครับ

ยินดีครับ
Norkaz