Hóa đơn và tiền trong Excel VBA
Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA chia một lượng tiền thành hóa đơn và tiền xu.
Tình huống:
Tạo sự kiện thay đổi trang tính. Mã được thêm vào Sự kiện Thay đổi Trang tính sẽ được Excel VBA thực thi khi bạn thay đổi một ô trên trang tính.
-
Mở Trình soạn thảo Visual Basic.
-
Nhấp đúp vào Trang tính 1 (Sheet1) trong Trình khám phá dự án.
-
Chọn Trang tính từ danh sách thả xuống bên trái. Chọn Thay đổi từ danh sách thả xuống bên phải.
Thêm các dòng mã sau vào Sự kiện Thay đổi Trang tính:
-
Khai báo một biến số lượng kiểu Double và một biến số i kiểu Integer.
Dim amount As Double, i As Integer
-
Sự kiện Thay đổi Trang tính lắng nghe tất cả các thay đổi trên Trang tính1. Chúng tôi chỉ muốn Excel VBA làm điều gì đó nếu có gì đó thay đổi trong ô B2. Để đạt được điều này, hãy thêm dòng mã sau:
If Target.Address = "$B$2" Then
-
Chúng ta khởi tạo lượng biến bằng giá trị của ô B2.
amount = Range("B2").Value
-
Chúng tôi làm trống phạm vi với các tần số.
Range("B5:B16").Value = ""
-
Bây giờ là lúc để chia nhỏ số tiền đã nhập. Chúng tôi bắt đầu một vòng lặp For Next.
For i = 5 To 16
-
Chúng tôi sẽ sử dụng cấu trúc Do While Loop. Mã đặt giữa các từ này sẽ được lặp lại miễn là phần sau Do While là đúng. Chúng tôi muốn Excel VBA lặp lại các dòng mã ở bước 10 miễn là số lượng lớn hơn hoặc bằng Giá trị của ô (i, 1).
Do While amount >= Cells(i, 1).Value Loop
-
Thêm các dòng mã sau vào Vòng lặp Do While.
Cells(i, 2).Value = Cells(i, 2).Value + 1 amount = amount - Cells(i, 1).Value
Giải thích: miễn là số tiền lớn hơn hoặc bằng Ô (i, 1). Giá trị, số tiền chứa hóa đơn / đồng tiền có giá trị này. Do đó, Excel VBA tăng tần suất của hóa đơn / xu này (dòng đầu tiên) và trừ giá trị của hóa đơn / xu từ số tiền (dòng thứ hai). Quá trình này sẽ được lặp lại cho đến khi số lượng trở nên nhỏ hơn giá trị của Ô (i, 1). Tiếp theo, Excel VBA tăng i và chuyển đến hóa đơn / xu tiếp theo để xem hóa đơn / xu này khớp với số tiền còn lại bao nhiêu lần. Bằng cách này, số tiền sẽ được chia thành các hóa đơn và tiền xu cho đến khi không còn tiền để chia nữa.
-
Đóng vòng lặp For Next và đừng quên đóng câu lệnh if (cả hai bên ngoài vòng lặp Do While).
Next i End if
-
Chạy thử chương trình.
Kết quả:
Lưu ý: tất nhiên số tiền đã nhập không nhất thiết phải chứa mọi hóa đơn / xu. Nếu số tiền không chứa một hóa đơn / xu nhất định, phần sau Do While không bao giờ đúng với hóa đơn / xu này và Excel VBA sẽ chuyển trực tiếp đến hóa đơn / xu tiếp theo.