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

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

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


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

จากภาพจะเห็นว่า 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 หวังว่าบทความนี้จะได้ประโยชน์ไม่มากก็น้อยนะครับ ถ้าใครมีวิธีอื่นๆ อีกก็มาเล่าให้ฟังกันบ้างนะครับ

สวัสดีครับ
นรภัทร พัชรพรพรรณ