/ / ตัวบ่งชี้ความคืบหน้าใน Excel VBA

ตัวชี้วัดความคืบหน้าใน Excel VBA

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

Userform ที่เราจะสร้างขึ้นมีลักษณะดังนี้:

ตัวชี้วัดความคืบหน้าใน Excel VBA

ในการสร้าง Userform นี้ให้ทำตามขั้นตอนต่อไปนี้

1. เปิดตัวแก้ไข Visual Basic ถ้าโครงการ Explorer ไม่สามารถมองเห็นคลิกมุมมองโครงการ Explorer.

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

การตั้งค่าหน้าจอ Userform ใน Excel VBA

รูปแบบ 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:

Private Sub CommandButton1_Click()

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. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub UserForm_Activate()

code

End Sub

คำอธิบาย: sub นี้เรียก sub ชื่อโค้ดอื่นที่เราจะสร้างในนาที สับสน? คุณสามารถอ่านบทฟังก์ชั่นและบทย่อยเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ subs หากคุณกำลังรีบเพียงทำตามขั้นตอนต่อไปนี้และคุณจะถูกปรับ

12 วางโค้ดย่อยไว้ในโมดูล (ใน Visual Basic Editor คลิกแทรกโมดูล) นี่เป็นเพียงตัวอย่างเท่านั้น นี่เป็นที่ที่คุณสามารถเพิ่มโค้ดของคุณเองเมื่อคุณต้องการใช้ตัวบ่งชี้ความคืบหน้านี้สำหรับแมโครของคุณเอง รหัสมีลักษณะดังนี้

Sub code()

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. เพิ่มความคืบหน้าชื่ออื่น รหัสมีลักษณะดังนี้:

Sub progress(pctCompl As Single)

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 ยังคงเหมือนเดิม

อ่านเพิ่มเติมได้ที่: