BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì? Nguyễn Duy Tuân: 0904.210.337 1/12
Macro là gì? Macro là một lệnh lệnh thực thi một hay nhiều thao tác người dùng lên đối tượng Excel được mã hóa thành các dòng lệnh theo ngôn ngữ lập trình VBA. Mở menu Developer (Excel 2010, 2013, ) (Excel 2007) Nguyễn Duy Tuân: 0904.210.337 2/12
Sau khi chọn hiển thị tab Developer chúng ta thấy xuất hiện menu dưới đây Tạo Macro trong môi trường VBA Bước 1: Nhấn ALT + F11 (menu Developer - > Visual Basic) Bước 2: Tại màn hình VBE, vào menu Insert -> Module Bước 3: Soạn thảo mã lệnh CODE trong module. Ví dụ tạo macro FillData Sub FillData() Dim I As Long MsgBox "Ban se dien cac giá tri vao A1:A100." For I = 1 To 100 Cells(I, 1).Value = I Next I End Sub Nguyễn Duy Tuân: 0904.210.337 3/12
Chạy Macro: Đặt con trỏ trong khói Sub..End Sub (trong thân một macro). Nhấn F5 hoặc chọn nút Run Macro Tạo Macro bằng chức năng Record Macro (4 bước) Ví dụ: Tạo macro để định dạng dữ màu đỏ, cỡ chữ 14, Bold, Tahoma, nền màu vàng. Hãy chuẩn bị kỹ các thao tác sẽ làm một cách chính xác, không được phép làm sai. Bước 1: Chọn đối tượng (bôi đen). Ví dụ A3:D12. Vùng chọn này có vai trò như vùng mẫu. Bước 2: Vào menu Developer->Record Macro. Khi cửa sổ Record Macro hiện lên. Đặt tên macro, hãy dùng các ký tự A-Z rồi với đến 0-9 (nếu dùng số) viết liền nhau, không dấu cách, không các ký tự lạ, ký tự toán học. + Macro Name: đặt tên macro là DinhDang. + Shortcut key: nhấn D, thì ta có thể dùng phím tắt CTRL+SHIFT+D để chạy macro này. + Store macro in: Nơi lưu macro, ngầm định trong chính tập tinh Excel đang tạo. + Description: Để mô tả macro này dùng làm gì, người ta ra nó. Không được viết chữ có dấu vì môi trường VBA không lưu được chuỗi unicode. + Ok: Cuối cùng chọn nút OK để Excel bắt đầu ghi các lệnh mà bạn làm. Hãy thật cẩn thận từ đây. Không làm sai, làm thừa động tác nào vì tất cả các thao tác đều được Excel lưu lại vào macro DinhDang. Nguyễn Duy Tuân: 0904.210.337 4/12
Bước 3: Thực hiện các thao tác định dạng. Thực hiện các thao tác định dạng chữ đỏ, 14, Bold, Tahoma, nền vàng. Bước 4: Dừng chế độ ghi macro. Vào menu Developer->Stop Recording Chạy Macro Bạn hãy chọn một vùng dữ liệu cần thực hiện các thao tác định dạng như lã làm ở trên. Vào menu Developer-> Macro (Phím tắt ALT+F8). Chọn macro DinhDang bạn sẽ thấy toàn bộ các thao tác thủ công trước đây được tự động làm. Nguyễn Duy Tuân: 0904.210.337 5/12
Xem và sửa Macro Vào menu Developer-> Macro (Phím tắt ALT+F8). Chọn macro DinhDang, chọn Edit. Nguyễn Duy Tuân: 0904.210.337 6/12
Cửa sổ VBA/VBE hiện ra và chúng ta có thể chỉnh sửa lại code VBA theo ý. Tuy nhiên bạn phải thận trọng vì bạn cần có kiến thức cơ bản về VBA. Để đảo qua màn hình VBA <->Excel nhấn ALT+F11 Xóa Macro Xóa macro bạn có thể thực hiện trong cửa sổ Macro hoặc vào môi trường VBA để xóa. Vào menu Developer-> Macro (Phím tắt ALT+F8). Chọn macro DinhDang, chọn Delete. Gán macro lên nút lệnh, menu Nguyễn Duy Tuân: 0904.210.337 7/12
Nhấp chuột phải trên nút lệnh, chọn Assign Macro, cửa sổ Macro hiện ra, chọn macro DinhDang. Lưu tập tin chứa Macro Vào menu File->Save As Lưu tập tin với kiểu xls hoặc xlsm. Nếu lưu xlsx theo chế độ ngầm định của Excel 2007 trở lên thì macro sẽ mất vì loại file này theo quy định không chứa macro. Nguyễn Duy Tuân: 0904.210.337 8/12
Copy Macro, các hàm tự tạo vào tập tin Excel Giả xử có các hàm được viết dưới đây, hãy copy vào trong tập tin Excel để chạy. Function GetXlVersion() As String GetXlVersion = Val(Application.Version) End Function Function TienThue(Slg, Dgia, TyleThue) As Double TienThue = Slg * Dgia * TyleThue End Function Sub FillData() Dim I As Long MsgBox "Ban se dien cac giá tri vao A1:A100." For I = 1 To 100 Cells(I, 1).Value = I Next I End Sub Function ThueTNCN(Luong As Double, Optional Socon As Integer) As Double Dim GiamTruNuoiCon As Double, MucLuong As Double, ThucLuong As Double MucLuong = 9 GiamTruNuoiCon = 3.6 ThucLuong = Luong / 10 ^ 6 - MucLuong - Socon * GiamTruNuoiCon Select Case ThucLuong Case Is <= 0 ThueTNCN = 0 Case Is <= 5 ThueTNCN = ThucLuong * 0.05 Case Is <= 10 ThueTNCN = 5 * 0.05 + (ThucLuong - 5) * 0.1 Case Is <= 18 ThueTNCN = 5 * 0.05 + 5 * 0.1 + (ThucLuong - 10) * 0.15 Case Is <= 32 ThueTNCN = 5 * 0.05 + 5 * 0.1 + 8 * 0.15 + (ThucLuong - 18) * 0.2 Case Is <= 52 ThueTNCN = 5 * 0.05 + 5 * 0.1 + 8 * 0.15 + 14 * 0.2 + (ThucLuong - 32) * 0.25 Case Is <= 80 ThueTNCN = 5 * 0.05 + 5 * 0.1 + 8 * 0.15 + 14 * 0.2 + 20 * 0.25 + (ThucLuong - 52) * 0.3 Case Else ThueTNCN = 5 * 0.05 + 5 * 0.1 + 8 * 0.15 + 14 * 0.2 + 20 * 0.25 + 28 * 0.3 + (ThucLuong - 80) * 0.35 End Select ThueTNCN = ThueTNCN * 10 ^ 6 End Function Nguyễn Duy Tuân: 0904.210.337 9/12
Khi đã copy hàm tự tạo vào module trong VBA chúng ta có thể dùng chúng như những hàm Excel trên sheet. Nguyễn Duy Tuân: 0904.210.337 10/12
Cài đặt Add-ins trong Excel Vào menu File->Options ta có màn hình Chọn Add-ins, cửa sổ bên phải chọn nút Go. Tại cửa sổ Add-ins, chọn nút Browse để tìm tới thư mục chứa tập tin xla, xll, xlam Nguyễn Duy Tuân: 0904.210.337 11/12
Sau khi cài xong Add-in AccHelper Đọc số thành chữ chúng ta có thể dùng các hàm VND, USD để đọc số tiền thành chữ tiếng Việt hoặc Anh. BÀI TẬP: 1. Tạo macro kẻ bảng theo mẫu bạn chọn 2. Gán macro lên menu. 3. Mở tập tin Thuong theo doanh so.xlsx. Copy các hàm tự tạo trong tập tin thuong tho doanh so.txt và đảm bảo chạy được hàm NhanThuong. Lưu tành tập tin có định dạng lưu được macro. Nguyễn Duy Tuân: 0904.210.337 12/12