Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA tạo chỉ báo tiến trình. Chúng tôi đã giữ cho chỉ báo tiến trình đơn giản nhất có thể, nhưng nó trông chuyên nghiệp. Bạn đã sẵn sàng chưa? Userform mà chúng ta sẽ tạo ra như sau:

Progress Indicator in Excel VBA

Để tạo Biểu mẫu người dùng này, hãy thực hiện các bước sau.

  1. Mở Trình soạn thảo Visual Basic. Nếu Project Explorer không hiển thị, hãy bấm View, Project Explorer.

  2. Nhấp vào Chèn, Biểu mẫu người dùng. Nếu Hộp công cụ không tự động xuất hiện, hãy bấm Xem, Hộp công cụ. Màn hình của bạn sẽ được thiết lập như bên dưới.

Userform Screen Setup in Excel VBA

Biểu mẫu người dùng này chỉ bao gồm ba điều khiển. Một điều khiển khung và hai điều khiển nhãn.

  1. Thêm điều khiển khung. Bạn có thể thực hiện việc này bằng cách nhấp vào Khung từ Hộp công cụ. Tiếp theo, bạn có thể kéo điều khiển khung trên Biểu mẫu người dùng. Bạn cần thay đổi một số thuộc tính của điều khiển khung này. Bấm chuột phải vào điều khiển khung, sau đó bấm vào Thuộc tính. Làm trống trường Chú thích, đặt Chiều cao thành 24 và Chiều rộng thành 204.

  2. Thêm điều khiển nhãn đầu tiên và đặt nó vào điều khiển Khung. Bấm chuột phải vào điều khiển nhãn, sau đó bấm vào Thuộc tính. Đổi tên thành Bar, BackColor thành Highlight, bỏ trống trường Caption, đặt Height là 20 và Width thành 10.

  3. Thêm điều khiển nhãn thứ hai và đặt nó phía trên điều khiển Khung.

Bấm chuột phải vào điều khiển nhãn, sau đó bấm vào Thuộc tính.

Thay đổi tên thành Văn bản và thay đổi Chú thích thành ‘Đã hoàn thành 0%’.

  1. Thay đổi chú thích của Biểu mẫu người dùng thành Chỉ báo Tiến trình.

Khi điều này đã được hoàn thành, kết quả sẽ phù hợp với hình ảnh của Biểu mẫu người dùng được hiển thị trước đó.

  1. Đặt một nút lệnh trên trang tính của bạn và thêm dòng mã sau để hiển thị Biểu mẫu người dùng:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Nếu bạn đã xem qua các ví dụ về Biểu mẫu người dùng khác trên trang web này, bạn biết rằng đây là lúc để tạo UserForm_Initialize phụ. Sub này tự động chạy bất cứ khi nào Userform được tải. Do đó, khi bạn sử dụng phương thức Show cho Userform, mã sẽ tự động được thực thi. Thay vì UserForm_Initialize phụ, chúng tôi tạo Sub UserForm_Activate. Bằng cách sử dụng phụ này, Excel VBA có thể cập nhật Biểu mẫu người dùng để hiển thị tiến trình của macro.

  1. Mở Trình soạn thảo Visual Basic.

  2. Trong Project Explorer, nhấp chuột phải vào UserForm1 và sau đó nhấp vào View Code.

  3. Chọn Userform từ danh sách thả xuống bên trái. Chọn Kích hoạt từ danh sách thả xuống bên phải.

  4. Thêm dòng mã sau:

Private Sub UserForm_Activate()

code

End Sub

Giải thích: mã phụ này gọi một mã phụ có tên khác mà chúng tôi sẽ tạo sau một phút. Bối rối? Bạn có thể xem qua chương Chức năng và phụ của chúng tôi để tìm hiểu thêm về đăng ký. Nếu bạn đang vội, chỉ cần thực hiện các bước sau và bạn sẽ ổn.

  1. Đặt mã có tên phụ vào một mô-đun (Trong Visual Basic Editor, bấm Chèn, Mô-đun). Đây chỉ là một ví dụ. Đây là nơi để thêm mã của riêng bạn khi bạn muốn sử dụng chỉ báo tiến trình này cho macro của riêng bạn. Đoạn mã trông như sau.

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

Giải thích: đầu tiên, chúng ta khởi tạo một số biến. Tiếp theo, chúng ta xóa sheet1.

Chúng tôi sử dụng vòng lặp kép để hiển thị các giá trị từ 1 đến 1000 trong 100 hàng đầu tiên của trang tính. Điều này sẽ giữ cho Excel VBA bận rộn trong một thời gian và cho chúng tôi cơ hội để xem tiến trình của macro. Biến pctCompl (viết tắt của phần trămCompleted) đo lường tiến trình của macro. Cuối cùng, chúng tôi gọi một tiến trình phụ khác có tên là tiến trình và chuyển giá trị của biến pctCompl để cập nhật Biểu mẫu người dùng. Bằng cách này, chúng ta có thể thấy tiến trình của macro! 13. Thêm một tiến trình phụ có tên khác. Đoạn mã như sau:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"

UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Giải thích: dòng mã đầu tiên thay đổi chú thích của điều khiển nhãn đầu tiên. Dòng mã thứ hai thay đổi chiều rộng của điều khiển nhãn thứ hai. Thêm DoEvents để cập nhật Biểu mẫu người dùng.

  1. Thoát Visual Basic Editor và nhấp vào nút lệnh trên trang tính:

Kết quả:

Progress Indicator Result

Lưu ý: đối với macro này, chúng tôi đã sử dụng biến i để đo lường tiến trình.

Ví dụ, ở hàng 11, 10% được hoàn thành. Điều này có thể khác đối với macro của bạn. Kỹ thuật chuyển giá trị của biến pctCompl đến tiến trình phụ để cập nhật Biểu mẫu người dùng vẫn được giữ nguyên.