ผู้ใช้ Excel ส่วนมากมักคิดว่า อะไรก็ตาม ปัญหาใดก็ตามที่คิดไม่ออก หาทางใช้ Excel แบบธรรมดาไม่ได้ ต้องใช้ Excel VBA ช่วยหาคำตอบได้แน่ เชื่อกันว่า Excel VBA ต้องเป็นทางออกสุดท้าย แต่แล้วพอใช้ Excel VBA ได้สักพัก กลับพบว่าวิธีการที่ตนเลือกใช้ กลายเป็นปัญหาต่อเนื่องไม่รู้จบ ครั้นจะคิดถอยหลัง จะเลิกใช้ Excel VBA กลับไปใช้วิธีการเหมือนเดิมก็สายไปเสียแล้ว ดังนั้นจึงขอให้คำนึงในประเด็นต่อไปนี้ก่อนที่จะคิดใช้ Excel VBA (จากนี้ไปขอเรียก Excel VBA ย่อๆว่า VBA)
รู้จัก Excel ดีพอหรือยัง
ก่อนคิดจะหันไปใช้ VBA เป็นเครื่องมือหาคำตอบวิธีใหม่ คุณควรรู้จักตัวเครื่องมือที่มีมากมายหลากหลายชนิดให้ครบถ้วนก่อน ทั้งเครื่องมือที่เป็นคำสั่งบนเมนู สูตรคำนวณ และวิธีออกแบบตารางที่ถูกต้อง โดยไม่จำเป็นต้องรู้ลึกถึงขั้นใช้เป็นทุกอย่าง เพียงแต่ขอให้รอบรู้ว่าสิ่งที่ Excel มีเตรียมไว้ให้ใช้พร้อมอยู่แล้วนั้น สามารถนำไปใช้กับงานประเภทใดได้บ้าง โดยเฉพาะคำสั่งบนเมนูประเภทที่ใช้ทำงานได้อัตโนมัติ
ข้อผิดพลาดที่พบเห็นเสมอ เกิดจากการขาดความรอบรู้ว่า Excel สามารถใช้ทำงานอะไรได้บ้าง ทำให้หันไปวุ่นวายวางแผนใช้ VBA ซึ่งกว่าจะสร้างรหัส VBA ได้ครบถ้วน ก็ต้องลองผิดลองถูกเสียเวลาและเหนื่อยยากมิใช่น้อย โดยหารู้ไม่ว่าแค่คลิกเดียวบนเมนู หรือแค่จัดโครงสร้างตารางใหม่ให้ถูกต้อง ก็สามารถสร้างงานที่ต้องการได้เช่นกัน
ขอให้พึงระลึกไว้เสมอว่า ถ้าเป็นงานพื้นๆที่เป็นปัญหาประจำของทุกคน ทางบริษัท Microsoft ได้จัดเตรียมเครื่องมือใน Excel ไว้เรียบร้อยแล้ว โดยไม่จำเป็นต้องขวนขวายไปใช้ VBA ให้เสียเวลาหรอก เพียงแต่ว่าเราอาจต้องใช้คำสั่งบนเมนูหลายอย่างนำมาใช้ร่วมกันให้เป็น
คุ้มไหม ใช้ซ้ำบ่อยไหม
ในประเด็นเรื่องคุ้มนี้ ไม่ใช่แค่คุ้มเรื่องเงินทอง ในแง่ประโยชน์ที่สามารถประเมินเป็นตัวเงินได้จากงานที่ใช้ VBA เท่านั้น แต่ควรคำนึ่งถึงค่าเสียเวลาของตัวคุณเองด้วย ถ้าต้องใช้เวลาสัก 50 ชั่วโมง (สมมติว่าใช้เวลาสร้างงาน 25 วัน วันละ 2 ชั่วโมง) แล้วค่าแรงของตัวคุณเองปาเข้าไปชั่วโมงละ 1,000 บาท ดังนั้นแฟ้มงานที่ใช้ VBA ย่อมมีต้นทุนถึง 50,000 บาททีเดียว จากนั้นยังต้องคอยกลับมาเสียเวลานับปีในการปรับปรุงแก้ไข ซึ่งย่อมตีกลับเป็นต้นทุนเพิ่มเข้าไปได้อีก บางแฟ้มกว่าจะเสร็จสมบูรณ์อาจมีค่าที่นึกไม่ถึงสูงเป็นแสนเป็นล้านบาท
สิ่งที่นำมาเปรียบเทียบกับต้นทุนที่เสียไป ได้แก่ ระบบงานง่ายขึ้น ช่วยลดความซับซ้อน ลดความซ้ำซ้อน ลดโอกาสที่จะเกิดข้อผิดพลาดได้ไหม ถ้าต้องทำงานนั้นซ้ำแล้วซ้ำอีก จะช่วยประหยัดเวลาทำงานได้วันละกี่ชั่วโมง ช่วยลดความกังวล ความเครียด ความห่วงใย ความกลัวว่า งานที่สร้างขึ้นจะหมดข้อผิดพลาด สามารถส่งงานได้ทันกำหนดแน่นอนหรือไม่
มีเวลาไหม ตามเทคโนโลยีทันหรือไม่
กว่าจะเริ่มใช้ VBA เป็น คุณต้องลงทุนลงแรงเสียเวลาอ่านหนังสือ แบ่งเวลาทำงานมาเข้าอบรม แต่เวลาที่เสียไปนี้เป็นเพียงช่วยให้คุณเริ่มรู้จักว่า VBA เป็นอย่างไร มีประโยชน์อย่างไรได้เท่านั้น ถ้าอยากใช้ VBA ให้เป็นชนิดที่เรียกตนเองว่า โปรแกรมเมอร์ จะต้องเสียเวลาให้กับ VBA อีกมากมาย เพราะยังมีหนังสือเล่มหนาให้อ่านอีกเป็นตั้ง ดังนั้นหากคุณมีเวลาเพียงน้อยนิดในแต่ละวันให้กับ VBA ก็ขอให้ตั้งหลักไว้ว่า รอให้เกิดปัญหาขึ้นก่อนเถอะแล้วค่อยนึกถึง VBA ประเภททำไปแก้ไขไปทีละเล็กทีละน้อย ไม่จำเป็นต้องเสร็จแบบสมบูรณ์เพียบพร้อม หรือใช้รหัสที่สั้นกะทัดรัดที่สุด หรือจำเป็นต้องเสียเวลาไปกับการหาทางทำให้รหัส VBA ทำงานเร็วที่สุด
นอกจากนั้นแม้ว่าตัวรหัส VBA ในวันนี้ส่วนใหญ่เป็นตัวรหัสที่ใช้กันมาตั้งแต่ต้น แต่ทุกครั้งที่มี Excel รุ่นใหม่ จะพบว่ามีรหัสใหม่เพิ่มขึ้นเสมอ บางครั้งยังปรับเปลี่ยนวิธีใช้รหัสหนึ่งๆต่างไปจากเดิม ซึ่งถือเป็นหน้าที่ของผู้ใช้ VBA จะต้องคอยติดตามข่าวคราวการปรับปรุงให้ทันยุคทันสมัย แล้วกลับไปแก้ไขรหัสเก่าๆให้ใช้ทำงานต่อไปได้ตลอด
มีคนแทนหรือไม่
จะไม่เป็นปัญหาเลยถ้างานที่คุณทำนั้นไม่เกี่ยวข้องกับคนอื่น คุณจะหยุดหรือคุณจะลาออกไป ไม่กระทบกับระบบงานส่วนรวม แต่ถ้าเกี่ยวข้องกับงานส่วนรวม ย่อมเกิดปัญหาต่อเนื่องร้ายแรงอย่างมากต่อบริษัท
ลองนึกดูว่า ถ้าแฟ้มงานที่ใช้ VBA ช่วยนั้นเกิดไม่ทำงานตามเดิมขึ้นมา แต่ไม่สามารถหาใครมาช่วยแก้ไขได้ทันเวลา ผู้ใช้งานที่ติดนิสัยทำงานแบบสบาย พอเปิดแฟ้มขึ้นมาแล้วกดปุ่มเดียวสั่งให้ Excel ทำงานแบบอัตโนมัติ กลับพบว่าแฟ้มไม่ทำงานเองแบบเดิมเสียแล้ว งานจะหยุดเดิน ครั้นจะหันกลับไปใช้ระบบงานแบบเดิมก็ลืมกันไปหมดแล้ว
ผู้บริหารหรือหัวหน้าควรคำนึงถึงประเด็นตัวตายตัวแทนนี้ให้ดี ก่อนที่จะยอมให้พนักงานหรือลูกน้องคนใดใช้ VBA จะต้องหาตัวแทนเข้าไปประกบ ร่วมสร้างงาน ยิ่งถ้างานใดมีความสำคัญต่อความอยู่รอดของบริษัท จำต้องกำหนดให้เขียนคู่มืออธิบายรหัสทุกขั้นที่ใช้ไว้เสมอ
ระบบเริ่มตายตัว รู้จักปัญหาครบถ้วนหรือยัง
ตัวโครงสร้างของรหัส VBA และตัวรหัส VBA จะถูกแก้ไขเปลี่ยนแปลงได้โดยมนุษย์เข้าไปเขียนแก้ไขใน VBE เท่านั้น ตัวรหัส VBA โดยทั่วไปไม่สามารถปรับเปลี่ยนตามโครงสร้างตารางในชีทที่เปลี่ยนไป ดังนั้นก่อนที่จะคิดใช้ VBA ควรรอจนกว่าระบบงานตายตัว ชัดเจน และไม่มีปัญหาใหม่เกิดขึ้นตามมาอีก แล้วหาทางใช้รหัสที่ไม่ต้องแก้ไขอีกเลย เพราะหากต้องย้อนกลับไปแก้ไขรหัสที่เขียนไว้เมื่อปีก่อน คงยากที่ใครจะจำได้ว่า จะต้องกลับไปแก้ไขอะไรที่ส่วนไหนของรหัสนับร้อยนับพันบรรทัด
จงจำไว้ว่า สักวันหนึ่งคุณจะจำรหัส VBA ที่เขียนไว้ไม่ได้ ดังนั้นขอให้แยกรหัสออกเป็นชุดย่อยๆและใช้สั่งให้ทำงานเพียงขั้นเดียว หรือเป็นชุดคำสั่งที่ใช้ควบคุมการทำงานเพียงระบบเดียวที่เกี่ยวข้องกันชัดเจนเท่านั้น เพื่อช่วยทำให้ย้อนกลับไปแก้ไขได้ง่าย และถ้าเกิดข้อผิดพลาดขึ้นมา ย่อมถูกจำกัดให้ส่งผลกระทบกับระบบงานหนึ่งๆเท่านั้น
หมดทางอื่นแล้วหรือยัง
หากคุณคิดแล้วว่า ยังไงๆก็ต้องหาทางใช้ VBA ให้ได้ ทั้งๆที่ตัวเองไม่ได้เก่ง Excel เท่าใดนัก หน่วยงานก็เล็กๆ ไม่มีตัวตายตัวแทนอย่างที่เตือนไว้ข้างต้นนั้นหรอก ปัญหาก็ยังไม่แน่ไม่นอน อาจเกิดปัญหาต้องจัดระบบใหม่อีกเมื่อใดก็ได้ แต่จะขอใช้ VBA เพื่อช่วยลดขั้นตอนของงานลงบ้าง สิ่งใดที่ต้องทำซ้ำแล้วซ้ำอีกจะได้ใช้ VBA ควบคุมให้ทำงานเองตั้งแต่ต้นจนจบ หากคิดว่าหมดทางออกอื่นๆแล้ว ก็ขอให้ใช้ VBA กันอย่างฉลาด รหัสใดที่ยากนักให้ตัดทิ้ง รหัสใดไม่จำเป็น ก็ไม่ต้องใช้ เพื่อทำให้ง่ายต่อการแก้ไขในภายหลัง
ข้อพิสูจน์ว่า VBA ใช้งานได้จริง
รหัส VBA จะใช้งานได้จริง ใช่ว่าขึ้นกับว่าคุณได้ทดสอบแล้วว่าสามารถสั่งให้รหัสทำงานได้โดยไม่มีปัญหาเท่านั้น หากยังต้องทดสอบโดยทดลองเปิดแฟ้มบนเครื่องคอมพิวเตอร์เครื่องอื่นและใช้งานโดยผู้อื่นซึ่งไม่เกี่ยวข้องกับการสร้างรหัสอีกด้วย
ทดลองแก้ไขตำแหน่งตาราง เปลี่ยนชื่อชีทหรือชื่อแฟ้มให้ต่างไปจากเดิม หากรหัสสามารถทำงานได้ปกติจึงจะถือว่าใช้งานได้จริง