รับแฟ้มของคนอื่นมาใช้หรือริจะใช้แฟ้มที่มี VBA ต้องระมัดระวังอะไรบ้าง

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

เมื่อได้รับแฟ้มของคนอื่นมาใช้ 

  1. จัดการเก็บแฟ้มต้นฉบับเอาไว้ เพื่อเป็นหลักฐานว่าที่คนเก่าเขาทำไว้นั้นเป็นอย่างไรบ้าง ถ้าเจอว่าผิดจะได้แยกความรับผิดชอบได้ชัดว่าไม่ใช่ฝีมือคุณนะ

  2. พอเปิดแฟ้มขึ้นมาให้สังเกตว่ามีแถบสีเหลืองคาดด้านบนของหน้าจอแสดงคำเตือนว่า SECURITIES WARNING Macros has been Disabled มีปุ่ม Enable Content ซึ่งจะเตือนขึ้นมาเมื่อในแฟ้มนั้นมีรหัส VBA ติดมาด้วย ซึ่งต้องระมัดระวังอย่างยิ่ง ถ้าไว้ใจว่าแฟ้มนั้นสร้างขึ้นมาจากคนที่ไว้ใจได้จึงจะกดปุ่ม Enable และห้ามไปโยกย้ายเซลล์ไปที่อื่น ห้ามเปลี่ยนชื่อชีท หรือแม้แต่เปลี่ยนชื่อแฟ้มให้ต่างไปจากเดิม

  3. ถ้าถูกเตือนให้ Update Links แสดงว่าแฟ้มนั้นเป็นแฟ้มปลายทางที่มีสูตรลิงก์รับข้อมูลมาจากแฟ้มอื่น ให้ไปหารายชื่อแฟ้มต้นทางได้จากเมนู Data > Workbook Links (หรือ Update Links ใน Excel รุ่นเก่าก่อน 365) แล้วไปติดตามหาแฟ้มต้นทางเหล่านั้นให้ครบ ถ้าหาตัวแฟ้มต้นทางไม่ได้เลย เวลาเปิดแฟ้มอย่าไป Update Links ถ้าหาแฟ้มเจอแต่ชื่อแฟ้มต่างไปแล้ว หรือไม่ได้อยู่ในโฟลเดอร์ที่ Excel แสดงไว้ในหน้าจอ Workbook Links ให้แก้ใขลิงก์ให้ตรงโดยสั่ง Change Sources

  4. ให้แยกแยะแต่ละส่วนของตารางว่าส่วนไหนเป็นเซลล์สำหรับกรอกค่า โดยกดปุ่ม F5 > Special > Constants หรือ Formulas เพื่อหาว่าเซลล์ตรงไหนเป็นสูตรบ้าง แล้วจัดการใส่สีพื้นหรือสีฟอนต์แยกแต่ละส่วนให้ต่างกัน


  5. ให้กดปุ่ม F3 > Paste List เพื่อให้ Excel สรุปรายชื่อ Range Name ที่ตั้งไว้ในแฟ้มนั้นว่าตั้งชื่อไว้ให้กับพื้นที่ตารางตรงไหนบ้าง จะได้ระมัดระวังการไปสั่ง Delete/Insert Row หรือ Column ซึ่งจะกระทบกับชื่อที่ตั้งไว้ แต่ถ้าไม่พบว่ามีการตั้งชื่อ Range Name ไว้เลย จะแกะสูตรยากขึ้นหลายเท่าทีเดียวว่าตำแหน่งที่อ้างอิงไว้ในสูตรอยู่ตรงไหนบ้าง

  6. ถ้าแฟ้มนั้นมี VBA ใช้อยู่ ให้กดปุ่ม ALT+F11 เพื่อเปิดดูรหัส VBA ว่ามีการอ้างอิงถึงตำแหน่งเซลล์ในชีทชื่ออะไรบ้าง ถ้าพบว่ามีการอ้างอิงถึงตำแหน่ง reference แบบ A1 ไว้หรืออ้างอิงกับชื่อชีทชื่อแฟ้มไว้ แสดงว่าในแฟ้มนั้นห้ามโยกย้ายเซลล์หรือเปลี่ยนชื่อชีทชื่อแฟ้มโดยเด็ดขาด

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

  7. ให้แกะสูตรโดยคลิกลงไปดูโครงสร้างสูตรในช่อง Formula Bar หรือสั่ง Formulas > Show Formulas เพื่อแกะดูส่วนของพื้นที่ตารางที่อ้างอิงไว้ในสูตร Sum, VLookup, XLookup มีการใส่เครื่องหมาย $ ไว้หรือไม่ ถ้าไม่ได้ใส่ $ ไว้ แสดงว่าสูตรนั้นสามารถใช้ได้ที่เซลล์เดิมเท่านั้น ห้าม Copy ไปวางที่อื่น หรือถ้าใส่ $ ไว้ตัวเดียว แสดงว่าเวลา Copy ไปวางที่อื่นต้องวางในแนวเดียวกันกับ $ ที่ใส่ไว้หน้า row/column แต่ถ้าใส่ $ ไว้ 2 ตัวทั้งหน้า row หน้า column จะสามารถ copy สูตรไปวางที่อื่นได้

  8. ตรวจสอบพื้นที่ตารางฐานข้อมูลที่นำไปอ้างอิงในสูตรต่างๆว่า กำหนดขอบเขตไว้แค่ไหน ถ้ากำหนดพื้นที่ไว้แบบตายตัวก็แสดงว่า ห้ามกรอกค่าใหม่เป็นรายการใหม่ต่อท้ายลงไปในตารางฐานข้อมูลเพราะสูตรจะไม่รับรู้ถึงรายการใหม่นั้น เว้นแต่พื้นที่ตารางฐานข้อมูลนั้นได้ถูกเปลี่ยนให้เป็น Table ไว้แล้ว ซึ่งสังเกตได้ง่ายว่าเมื่อคลิกลงไปในตารางตรงไหนก็ได้ จะพบเมนู Table แสดงเพิ่มขึ้นมาให้เห็น หรือสังเกตุว่าพื้นตารางมีสีใส่เป็นลายสลับกันไปเรื่อยๆ (แต่วิธีนี้ไม่แน่นอนนัก)

  9. ทดลองกรอกค่าลงไป หากพบว่าสูตรที่อ้างอิงไว้กับเซลล์ที่กรอกค่า ไม่ได้คำนวณหาค่าใหม่มาให้แต่ยังคงเป็นค่าเดิม แสดงว่าแฟ้มนั้นใช้ระบบการคำนวณแบบ Manual Calculation เอาไว้ หากต้องการสั่งให้คำนวณต้องกดปุ่ม F9 หรือเปลี่ยนระบบให้เป็น Automatic Calculation ได้ที่เมนู Formulas

ความคิดเห็น