วันนี้มีงานที่ต้องให้พนักงานคีย์ข้อมูลช่วยคีย์ หน้าตาเป็นดังภาพ

direction.JPG

ซึ่งจาก จุดที่ลูกศรชี้ ปกติเราต้องใช้ ปุ่ม home ช่วยในการกลับไป (อันนี้ขึ้นอยู่กับการตั้งค่า Excel ของแต่ละคน) แต่ว่า เรามองว่า ถ้าเรามี เรคคอร์ดมากว่า หมื่นเรคคอร์ดที่จะต้องคีย์เท่ากับว่า เราต้องกด ปุ่ม Home มากกว่า หมื่นครั้ง ซึ่ง ไม่น้อยเลยทีเดียว จึงคิดว่า จะต้องช่วยถอมนิ้วของเราและคีย์บอร์ดไว้นานๆ จึงจัดการปรับแต่ง excel ของเราซะนิดนึง

ขั้นแรก ไปที่ เมนู Tools -> Options – Edit แล้วปรับ ดังกรอบสีแดง เพื่อให้ทุกครั้งที่เราคีย์เสร็จแล้วกด enter เคอร์เซอร์ จะวิ่งไปทางขวามือ

option_edit.JPG

จากนั้น เราก็ไปจัดการ เพิ่ม code VBA (Visual Basic for Application) อีกสองสามบรรทัดเพื่อให้ดักจับเหตุการการเลื่อนเคอร์เซอร์ ซึ่งในที่นี้เราประยุกต์ Event Worksheet Change มาใช้งาน ซึ่งแนวความก็คือ ถ้าเคอร์เซอร์ เลื่อนไปทางขวา เกิน คอลัมน์ C เมื่อไหร่ ให้มันเด้งกลับไปที่ คอลัมน์ A ของบรรทัดถัดไปโดยพลัน

vbacode.jpg

จากภาพจะเห็นว่า Event Worksheet_Change มี Argument หนึ่งตัวคือ Target ซึ่งเป็นถูกระบุเป็น Range โดย Range จะมี properties ที่จะมาช่วยเราในงานนี้อยู่สองตัว คือ .column และ .row ในการนี้เราต้องรู้ก่อนว่า คอลัมน์ C เท่ากับ 3 ซึ่งหลังจากเรากด Enter ตอนใส่ค่าใน คอลัมน์ C เจ้า Event worksheet_change จะทำงานทันที (แต่จริงๆแล้ว มันทำงานตลอดเวลาแต่ว่า ไม่เข้าเงือนไขเลยไม่สงผลอะไร) โดยจะทำการเช็คว่า .column (ตอนกด enter ที่ คอลัมน์ C มีค่า เป็น 3) มีค่า มากกว่า 2 หรือยัง ปรากฎว่ามากว่าแล้ว จึงจัดการทำ คำสั่ง Cell Select โดยอ้างค่า แถวปัจจุบันบวกด้วย 1 และ คอลัมน์ที่ 1 ทันใด

ปล. 1 VBA code นี้จะต้อง ใส่ไว้ใน worksheet ที่เรากำลังจะคีย์งานนะครับ
ปล. 2 ลืมนึกไปว่าบางคนยังไม่เคยเข้าไปที่ VBA editor ไว้คราวหน้าจะมาพูดถึงก็แล้วกัน
ปล. 3 มีไฟล์มาให้ ลองเอาไปเล่นด้วย แต่ตอนเปิด ต้อง enable macro ก่อนนะครับ (คลิ๊กขวาที่ชื่อแล้ว save as.. ได้เลย) autonextrecord.xls