ตัวชี้วัดความคืบหน้าใน Excel VBA
ด้านล่างเราจะดูที่โปรแกรมมา Excel VBA ที่สร้าง a ตัวบ่งชี้ความคืบหน้า. เรารักษาตัวบ่งชี้ความคืบหน้าให้เรียบง่ายที่สุดเท่าที่จะเป็นไปได้ แต่ก็ดูเป็นมืออาชีพคุณพร้อมหรือยัง?
Userform ที่เราจะสร้างขึ้นมีลักษณะดังนี้:

ในการสร้าง Userform นี้ให้ทำตามขั้นตอนต่อไปนี้
1. เปิดตัวแก้ไข Visual Basic ถ้าโครงการ Explorer ไม่สามารถมองเห็นคลิกมุมมองโครงการ Explorer.
2. คลิกแทรก, Userform ถ้ากล่องเครื่องมือไม่ปรากฏขึ้นโดยอัตโนมัติให้คลิกมุมมองกล่องเครื่องมือ ควรตั้งค่าหน้าจอดังนี้

รูปแบบ Userform นี้ประกอบด้วยเพียงสามตัวควบคุมเท่านั้น การควบคุมเฟรมและการควบคุมฉลากสองชุด
3. เพิ่มตัวควบคุมเฟรม คุณสามารถทำได้โดยคลิกที่ Frame จาก Toolbox จากนั้นคุณสามารถลากกรอบควบคุมบน Userform ได้ คุณต้องเปลี่ยนคุณสมบัติบางอย่างของตัวควบคุมเฟรมนี้ คลิกขวาที่ตัวควบคุมเฟรมแล้วคลิก Properties ล้างฟิลด์คำอธิบายภาพโดยตั้งความสูงเป็น 24 และกว้างเป็น 204
4 เพิ่มตัวควบคุมป้ายชื่อแรกและวางไว้ในตัวควบคุมเฟรม คลิกขวาที่ตัวควบคุมฉลากแล้วคลิก Properties เปลี่ยนชื่อเป็น Bar, BackColor to Highlight, ว่างฟิลด์ Caption, ตั้งความสูงเป็น 20 และ Width to 10
5 เพิ่มตัวควบคุมฉลากที่สองและวางไว้เหนือกรอบควบคุม คลิกขวาที่ตัวควบคุมฉลากแล้วคลิก Properties เปลี่ยนชื่อเป็นข้อความแล้วเปลี่ยนคำอธิบายเป็น "0% Completed"
6. เปลี่ยนคำอธิบายภาพของ Userform to Progress Indicator
เมื่อผลการค้นหาเสร็จสมบูรณ์ผลลัพธ์ควรสอดคล้องกับรูปแบบ Userform ที่แสดงไว้ก่อนหน้านี้
7. วางปุ่มคำสั่งลงบนแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้เพื่อแสดง Userform:
UserForm1.Show
End Sub
หากคุณใช้ Userform แบบอื่น ๆ แล้วตัวอย่างในไซต์นี้คุณรู้ว่านี่เป็นเวลาในการสร้าง Sub UserForm_Initialize Sub นี้จะทำงานโดยอัตโนมัติเมื่อโหลด Userform ดังนั้นเมื่อคุณใช้วิธีการแสดงสำหรับ Userform รหัสจะถูกดำเนินการโดยอัตโนมัติ แทน Sub UserForm_Initialize เราจะสร้าง Sub UserForm_Activate โดยการใช้ย่อยนี้ Excel VBA สามารถปรับปรุง Userform เพื่อแสดงความคืบหน้าของมาโคร
เปิดตัวแก้ไข Visual Basic
9. ใน Project Explorer คลิกขวาที่ UserForm1 แล้วคลิก View Code
10. เลือก Userform จากรายการแบบหล่นลงด้านซ้าย เลือกเปิดใช้จากรายการแบบเลื่อนลงด้านขวา
11. เพิ่มบรรทัดรหัสต่อไปนี้:
code
End Sub
คำอธิบาย: sub นี้เรียก sub ชื่อโค้ดอื่นที่เราจะสร้างในนาที สับสน? คุณสามารถอ่านบทฟังก์ชั่นและบทย่อยเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ subs หากคุณกำลังรีบเพียงทำตามขั้นตอนต่อไปนี้และคุณจะถูกปรับ
12 วางโค้ดย่อยไว้ในโมดูล (ใน Visual Basic Editor คลิกแทรกโมดูล) นี่เป็นเพียงตัวอย่างเท่านั้น นี่เป็นที่ที่คุณสามารถเพิ่มโค้ดของคุณเองเมื่อคุณต้องการใช้ตัวบ่งชี้ความคืบหน้านี้สำหรับแมโครของคุณเอง รหัสมีลักษณะดังนี้
Dim i As Integer, j As Integer, pctCompl As Single
Sheet1.Cells.Clear
For i = 1 To 100
For j = 1 To 1000
Cells(i, 1).Value = j
Next j
pctCompl = i
progress pctCompl
Next i
End Sub
คำอธิบาย: ขั้นแรกเราเริ่มต้นตัวแปรบางอย่าง ต่อไปเราจะล้างแผ่นงาน 1 เราใช้ห่วงคู่เพื่อแสดงค่าตั้งแต่ 1 ถึง 1000 ใน 100 แถวแรกของแผ่นงาน ซึ่งจะทำให้ Excel VBA ไม่ว่างอยู่ครู่หนึ่งและทำให้เรามีโอกาสเห็นความคืบหน้าของมาโคร ตัวแปร pctCompl (ย่อมาจาก percentageCompleted) วัดความคืบหน้าของมาโคร สุดท้ายเราเรียกอีกชื่อว่า progress และส่งค่าของตัวแปร pctCompl เพื่ออัพเดต Userform ด้วยวิธีนี้เราจะเห็นความคืบหน้าของมาโคร!
13. เพิ่มความคืบหน้าชื่ออื่น รหัสมีลักษณะดังนี้:
UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2
DoEvents
End Sub
คำอธิบาย: สายรหัสแรกเปลี่ยนคำอธิบายภาพของตัวควบคุมป้ายชื่อแรก สายรหัสที่สองเปลี่ยนความกว้างของตัวควบคุมฉลากที่สอง เพิ่ม DoEvents เพื่อปรับปรุง Userform
14. ออกจาก Visual Basic Editor และคลิกปุ่มคำสั่งบนแผ่นงาน:
ผล:

บันทึก: สำหรับแมโครนี้เราใช้ตัวแปร i เพื่อวัดความคืบหน้า ตัวอย่างเช่นที่แถว 11 มีการเสร็จสิ้น 10% ซึ่งอาจแตกต่างกันสำหรับมาโครของคุณ เทคนิคการส่งผ่านค่าของตัวแปร pctCompl ไปยังขั้นตอนย่อยเพื่ออัพเดต User Form ยังคงเหมือนเดิม