Progress Bar หรือแถบแสดงความคืบหน้าในการทำงานของการรันคำสั่งต่างๆ ถือว่าจำเป็นสำหรับผมเลย ด้วยความเป็นมือสมัครเล่น จึงมักเขียนไปทดลองไป กว่าจะใช้ได้จริงๆก็ใช้เวลาอยู่ จึงมักจะแทรกข้อความต่างๆไว้บน Progress Bar เพื่อให้รู้ว่าคำสั่งรันไปถึงไหนแล้ว ส่วนหน้าที่หลักของ Progress Bar ที่ใช้สำหรับแสดงความคืบหน้าในการทำงานของคำสั่งนั้น ผมยกให้เป็นเรื่องรอง แต่ก็แสดงผลไปพร้อมๆกันครับอย่างที่เคยเล่าให้ฟังในครั้งก่อนๆครับ ผมมักเน้นการเขียนโค้ดง่าย ใช้งานง่ายเอาไว้ก่อน ยกตัวอย่างเช่นการสั่งสร้างรายงาน ผมมักจะให้ยืนยันก่อน ด้วย Msgbox ประมาณนี้หากผู้ใช้งานตอบ Cancel ก็จะยกเลิกการทำงานไป แต่หากตอบ OK ก็จะรันคำสั่งสร้างรายงาน พอจบคำสั่งก็จะแสดงข้อความนี้ผู้ใช้งานก็จะรับรู้ได้ว่างานเสร็จเรียบร้อยแล้ว ซึ่งงานที่ใช้เวลาสั้นๆมักไม่มีปัญหาอะไร แต่ถ้าต้องรันกันนานๆจะเริ่มมีปัญหา เดาไม่ถูกว่าประมวลผลไปถึงไหนแล้ว ใกล้เสร็จแล้วหรือยัง พอคิดจะสร้าง Progress Bar ก็เลยลองค้นหาข้อมูลในอินเตอร์เน็ตอย่างหนัก พบว่าสามารถทำได้หลายๆวิธี ซึ่งวิธีพื้นฐานที่ผมเอามาลองใช้งานดู ก็เป็นการใช้ StatusBar ซึ่งเป็นแถบด้านล่างสุดทางซ้ายของหน้าจอ Excel นั่นเองครับจากรูปข้างบน ตรงที่มีคำว่า Ready นี่ละครับ เราสามารถใช้เป็น Progress Bar ได้ด้วย การใช้งานก็ทำได้ตั้งแต่การแสดงข้อความธรรมดาๆ ไปจนถึงการแสดงเป็นแถบความคืบหน้าให้เห็นกันจริงๆ ใครสนใจก็ค้นหาดูในอินเตอร์เน็ตได้เลยครับ ผมเองก็เคยนำมาใช้อยู่หลายครั้งเหมือนกัน แต่โดยส่วนตัวแล้ว พบว่าผู้ใช้งานมักไม่ค่อยสังเกตเห็น ก็เลยหันมาใช้ Progress Bar ที่สร้างด้วย Userform เป็นหลักเรื่อยมาครับProgress Bar นั้น เหมาะมากกับงานประเภทวน Loop ทั้งหลาย ผมจะยกตัวอย่างจากโค้ด Loop อันนี้นะครับมีงานที่จะวน Select ไปทีละเซลล์ตั้งแต่ A1 ถึง A20 หลังจาก Select แล้ว จะหน่วงเวลาไว้ 1 วินาที จากนั้นจะระบายสีแดงลงไป วนไปเรื่อยๆจนครบ 20 บรรทัดแล้วก็จบ ซึ่งผมจะแทรกคำสั่ง Progress Bar ไว้ตรงบรรทัดว่างๆที่เว้นไว้นี่ละ ตามมาดูผมสร้าง Progress Bar กันครับสร้าง Userform ใหม่ขึ้นมา ผมเปลี่ยนชื่อใหม่เป็น UserformProgressBar ที่ Properties ของ UserformProgressBar- เปลี่ยน Caption ให้เป็นคำว่า ProgressBar- เปลี่ยนความสูงคือค่า Height ให้เป็น 100- เปลี่ยนค่า ShowModal จาก True ให้เป็น False ค่านี้สำคัญ เพราะปกติ ค่าเดิมๆจะเป็น True คือเมื่อเรารัน Userform ขึ้นมา การทำงานของโค้ดจะหยุดรอจนกว่าเราจะปิด Userform ลง แต่ถ้าค่าเป็น False คำสั่งต่างๆจะรันไปได้อย่างต่อเนื่อง ซึ่งก็ตรงตามวัตถุประสงค์ของการทำ Progress Bar นั่นคือการแสดง Userform ไปพร้อมๆกับการรันคำสั่งนั่นเองครับDoubleclick ไปตรงกลางๆของ Userform จะเห็นหน้าเขียนโค้ดขึ้นมา โค้ดแรกมีอยู่แล้วก็ปล่อยไว้อย่างนั้น มองไปที่ช่องบนขวา ให้ไปเลือกคำว่า Initialize จะได้โค้ด Private Sub UserForm_Initialize() ขึ้นมา ให้พิมพ์เพิ่มเติมไปตามนี้ครับคำสั่งนี้บอกให้ ProgressBar แสดงขึ้นที่ตรงกลางจอเสมอครับ วาง Label ลงไป 1 อัน ไว้ตรงส่วนล่างๆของ Userform- เปลี่ยนชื่อ Label1 เป็น LabelPframe- เปลี่ยนค่า BorderStyle เป็น 1-fmBorderStyleSingle เพื่อให้มีเส้นขอบ- เปลี่ยน Caption ให้เป็นช่องว่างวาง Label อีกอันลงไปใน LabelPframe กะๆให้ชิดซ้ายพอดีคร่าวๆก่อน- เปลี่ยนชื่อเป็น LabelPvalue- ลองคลิกที่ LabelPframe แล้วดูค่า Left ซึ่งที่ผมทำไว้เป็นค่า 6 จากนั้นมาคลิกที่ LabelPvalue เปลี่ยนค่า Left ให้เป็น 7 เพื่อให้ขยับออกมานิดนึงครับ- ดูค่า Top ของ LabelPframe แล้วปรับค่า Top ของ LabelPvalue ให้ มากกว่าสัก 1 ค่า ของผมค่า LabelPframe เป็น 42 จึงปรับ LabelPvalue ให้เป็น 43 ครับ- เปลี่ยน BackColor ให้เป็น HighLight ซึ่งจะออกสีฟ้าเข้มๆครับเริ่มเห็นเป็นรูปเป็นร่างขึ้นมาแล้วครับ วาง Label อีกอันลงไปในส่วนบนๆของ Userform ปรับความสูงเพิ่มอีกพอประมาณ แล้วเปลี่ยนชื่อให้เป็น LabelPdisplay ตรงนี้จะเอาไว้แสดงข้อความต่างๆเขียนโค้ดต่อไปนี้ลงไปครับผมประกาศตัวแปรไว้ด้านบนสุด และประกาศเป็น Public แทน Dim ก็เพื่อให้สามารถเรียกใช้ ProgressBar อันนี้ได้จากทุกๆ Module ที่ผมมีครับ ถึงเวลาเรียกใช้แล้วครับ กลับไปที่โค้ด "ระบายสีเซลล์" พิมพ์เพิ่มไปตามนี้ครับผมกำหนดค่า Pvalue และ MaxPvalue ก่อน เมื่อจบการทำงานก็สั่ง endProgressBar ไว้ด้วยครับทดลองรันโค้ดดูได้แล้วครับ ดูเป็นมืออาชีพขึ้นมาทันที แต่ไม่ใช่ว่าจะนำไปใช้กับงานประเภท Loop ได้อย่างเดียวนะครับ บางงานอาจจะนำไปใส่เป็นช่วงๆก็ได้ เพียงแต่กำหนด Pvalue ให้เป็นขั้นๆตามไปด้วย เช่น อาจจะแบ่งโค้ดเป็น 5 ขั้น ก็ปรับค่า MaxPvalue ให้เป็น 100 แล้วปรับ Pvalue ให้เป็น 20 เราก็จะมองเห็น ProgressBar คืบหน้าไปครั้งละ 20% ก็ได้ใจความเหมือนกันสามารถแนะนำหรือสอบถามเพิ่มเติมทางไลน์ได้เลย สวัสดีครับผมภาพประกอบ : โดยผู้เขียนเปิดประสบการณ์ความบันเทิงที่หลากหลายสุดปัง บน App TrueID โหลดเลย ฟรี !