- Tham gia
- 13/6/06
- Bài viết
- 7,201
- Được thích
- 24,662
Visual Basic for Application
Từ Office 95 Microsoft bắt đầu đưa vào một ngôn ngữ lập trình chung, không chỉ áp dụng cho các ứng dụng như Word và Excel mà cho cả các công cụ lập trình như VB. Microsoft gọi ngôn ngữ lập trình này là Visual Basic for Applications (VBA).VBA for Excel
Microsoft Excel là một công cụ mạnh để phân tích và trình bày thông tin. Một trong những thế mạnh của Excel là ngôn ngữ macro. Kể từ khi ra đời, Excel luôn là chương trình bảng tính có cài ngôn ngữ macro bao quát và linh hoạt nhất trong các phần mềm bảng tính.
Để viết macros trong Excel, bạn thật sự cần học hai công cụ khác biệt. Trước hết, bạn cần học cách làm việc với Visual Basic. Mọi kiến thức bạn học về Visual Basic không những áp dụng được trong Excel mà còn cho các phần mềm Microsoft khác. Thứ hai bạn học cách sử dụng Excel. Càng nắm vững sử dụng bảng tính Excel, bạn càng xây dựng hiệu quả các macros.
Bài 1: Chương trình VBA đầu tiên - Ra quyết định sử dụng VBA for Excel
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
Hình 1
Xây dựng nội dung VBA sử dụng Record Macro
Excel cung cấp một công cụ tiện lợi để thu một Macro.
1. Đứng ở một ô cần định dạng
2. Trên thanh công cụ toolbar, chọn Tools, Macro, chọn Record New Macro.
3. Hộp hội thoại Record New Macro xuất hiện. Trong hộp Macro Name, nhập tên của Macro cần thu, ví dụ MakeDecision và nhấn nút OK.
4. Nút Record Macro xuất hiện như trong hình bên cho thấy bộ thu recorder đang hoạt động. Đảm bảo nút Relative Reference được nhấn lõm xuống.
5. Định dạng ô (tô chữ mầu đỏ), sau đó nhấn mũi tên xuống dưới một lần
6. Nhấn nút Stop Macro
7. Lên Tools, Macro, Macros, một hộp hội thoại Macros xuất hiện. Chọn MakeDecision dưới mục Macro Name, sau đó nhấn nút Edit. Như vậy chúng ta chuyển sang môi trường lập trình của Excel, đồng thời chuyển tới macro vừa thu. Sub MakeDecision()
' MakeDecision Macro
' Macro recorded 2/15/00 by Phu
'
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.
Chạy macro
1. Chọn Sheet1 nếu nó chưa được chọn
2. Đứng ở ô dữ liệu đầu tiên (giao của hàng áo phông thể thao với Tháng 1). Trên Tools menu, chọn Macro, Macros, một hộp hội thoại Macro xuất hiện.
3. Chọn macro MakeDecision từ danh sách và nhấn OK.
Để tiện thử macro trong khi viết có thể gán nó với một nút
Gán macro với một nút
1. Nếu chưa xuất hiện thanh công cụ Form, hiện nó lên.
2. Trên thanh công cụ Form chọn nút Button rồi vè một nút lên bảng tính (nhấn giữ chuột trái trong khi vẽ một hình chữ nhật)
3. Nhả chuột trái, một hộp hội thoại Assign Macro xuất hiện, chọn MakeDecision từ danh sách, sau đó nhấn nút OK
4. Một nút xuất hiện trên bảng tính, mỗi khi nhấn chuột lên nút thì macro MakeDecision sẽ được thực hiện.
Chú ý: để sửa thuyết minh trên nút, bạn có thể nhấn Ctrl và nháy lên nút, khi đó nút sẽ được chọn, bạn có thể nhập thuyết minh mới.
Đị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()
' MakeDecision Macro
' Macro recorded 2/15/00 by Phu
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()
'
' MakeDecision Macro
' Macro recorded 2/15/00 by Phu
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()
'
' MakeDecision Macro
' Macro recorded 2/15/00 by Phu
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.
Phiên bản visual basic macro cuối cùng sẽ như sau:
Sub MakeDecision()
'
' MakeDecision Macro
' Macro recorded 2/15/00 by Phu
Do Until ActiveCell = ""
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
Loop
End Sub
Chạy macro để định dạng toàn bảng tính
1. Chọn Sheet1 nếu nó chưa được chọn
2. Đứng ở ô dữ liệu đầu tiên (giao của hàng áo phông thể thao với Tháng 1). Trên Tools menu, chọn Macro, Macros, một hộp hội thoại Macro xuất hiện.
3. Chọn macro MakeDecision từ danh sách và nhấn OK.
4. Toàn bộ bảng tính sẽ được duyệt và những doanh số dưới 100 sẽ bị tô đỏ.
Lần chỉnh sửa cuối: