Giả thiết bạn có bảng doanh số bán hàng như hình 1. Bạn muốn tìm xem những mặt hàng nào bán ra ít hơn 100 bộ và tô mầu đỏ. Chúng ta có thể sử dụng Format có điều kiện để làm việc này. Tuy nhiên để áp dụng linh hoạt, chúng ta sẽ xây dựng một macro làm việc đó.
|
Doanh số bán hàng của quý I và quí II |
|
||||
|
Tháng 1 |
Tháng 2 |
Tháng 3 |
Tháng 4 |
Tháng 5 |
Tháng 6 |
áo phông thể thao |
30 |
120 |
115 |
122 |
98 |
110 |
Bộ đồ thểthao |
220 |
180 |
160 |
140 |
120 |
100 |
Bộ áo mưa |
93 |
90 |
101 |
105 |
200 |
220 |
Quần soóc |
125 |
133 |
199 |
83 |
104 |
93 |
Ta thực hiện thu macro theo trình tự như sau:
Đoạn mã VBA như sau:
Sub MakeDecision()
Selection.Font.ColorIndex = 3
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Đối tượng ActiveCell tham chiếu đến ô hiện hành. Phương thức Offset của đối tượng ActivelCell chọn vùng nằm lệch đi so với ô hiện hành. Trong macro trên chọn ô nằm dưới vùng đang chọn một hàng và trên cùng cột.
Định dạng cho toàn cột
Macro trên chỉ định dạng cho một ô. Để định dạng toàn bộ cột, cần thêm hai dòng lệnh ở đầu và cuối thủ tục như sau:
Sub MakeDecision()
Do Until ActiveCell = ""
Selection.Font.ColorIndex = 3
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
End Sub
Để dừng vòng lặp điều kiện Until ActivelCell = "" được đưa vào câu lệnh Do-Loop. Macro sẽ duyệt toàn bộ các ô trong cột và định dạng cho đến khi gặp ô trống.
Để macro ra quyết định
Chúng ta cần phải để macro tự ra quyết định nhằm tự động hoá việc định dạng. Tuy nhiên, bộ ghi macro không thể đưa các quyết định vào macro. Chúng ta phải tự làm lấy việc đó. Bạn muốn macro tự quyết định xem có cần phải tô đỏ ô hiện hành hay không.
1. Quay sang VBA-Editor, chọn macro (thủ tục) MakeDecision, nhập câu lệnh If ActiveCell > 100 Then để quyết định xem ô nào có giá tị nhỏ hơn.
2. Nhập End If để kết thúc lệnh If. Macro sẽ như sau:
Sub MakeDecision()
Do Until ActiveCell = ""
If ActiveCell < 100 Then
Selection.Font.ColorIndex = 3
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
End Sub
Để quyết định hoạt động trên toàn bảng
Bạn cần phải để macro chuyển tới cột tiếp theo để chạy khắp bảng tính. Thêm các câu lệnh để chuyển đến đỉnh của cột tiếp theo.
Sub MakeDecision()
Do Until ActiveCell = ""
If ActiveCell < 100 Then
Selection.Font.ColorIndex = 3
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
ActiveCell.Offset(-1, 1).Range("A1").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
1. Dòng lệnh mới thêm thứ nhất để Excel lên trên một ô sau đó sang phải một ô.
2. Dòng thứ hai để Excel lên đỉnh cột.
3. Dòng cuối cùng để Excel đang từ đỉnh cột, nghĩa là vùng tiêu đề cột, xuống dưói một ô, tức vùng dữ liệu, như vậy là vùng tiêu đề không bị đưa vào tô mầu.
Cuối cùng thêm một câu lệnh lặp Do Loop khác để macro có thể duyệt hết từ cột này sang cột khác cho đến khi gặp phải ô trống.
» Tin mới nhất:
» Các tin khác: