Chào bạn, tôi đã tổng hợp một bộ tài liệu "Nhập môn VBA từ A-Z" được cấu trúc lại như một giáo trình ngắn gọn. Tài liệu này tập trung vào tư duy lập trình và các mẫu code (pattern) chuẩn để bạn có thể tự phát triển sau này.
CẨM NANG HƯỚNG DẪN LẬP TRÌNH VBA (Dành cho người làm dữ liệu)
CHƯƠNG 1: THIẾT LẬP MÔI TRƯỜNG
Trước khi viết code, bạn cần "mở khóa" công cụ:
Bật thẻ Developer: Chuột phải vào thanh Ribbon (vùng menu trên cùng) -> Customize the Ribbon -> Tích chọn Developer.
Mở trình soạn thảo: Nhấn
Alt + F11.Tạo Module: Trong cửa sổ bên trái (Project Explorer), chuột phải vào tên File -> Insert -> Module. (Luôn viết code trong Module, hạn chế viết trực tiếp vào Sheet).
CHƯƠNG 2: TƯ DUY ĐỐI TƯỢNG (OBJECT MODEL)
VBA điều khiển Excel theo cấp bậc từ lớn đến nhỏ. Bạn phải chỉ đường dẫn cụ thể để Excel hiểu.
Application: Chính là phần mềm Excel.
Workbook: File Excel (
ThisWorkbook: file đang chứa code,ActiveWorkbook: file đang mở).Worksheet: Một sheet cụ thể (
Sheets("Data"),ActiveSheet).Range/Cells: Ô dữ liệu.
Quy tắc "Dấu Chấm": Đi từ cha xuống con.
Application.Workbooks("BaoCao.xlsx").Sheets("Thang1").Range("A1").Value = 100
Mẹo: Nếu đang đứng ở file hiện tại, bạn có thể bỏ qua Application và Workbook.
CHƯƠNG 3: CÚ PHÁP CỐT LÕI (GRAMMAR)
1. Biến (Variables) - Chiếc hộp chứa dữ liệu
Khai báo biến giúp code chạy nhanh và chính xác.
Dim hoTen As String ' Chuỗi ký tự (Text)
Dim soLuong As Long ' Số nguyên (dùng Long thay vì Integer để tránh lỗi tràn số)
Dim donGia As Double ' Số thập phân
Dim ws As Worksheet ' Đối tượng Sheet
Dim rng As Range ' Đối tượng vùng chọn
2. Cách gọi ô (Cells vs Range)
Range: Dễ đọc, dùng cho vùng cố định. Ví dụ:
Range("A1:B10").Cells: Dùng cho vòng lặp, linh hoạt. Cú pháp:
Cells(hàng, cột).Ví dụ:
Cells(2, 1)là ô A2.Cells(i, 5)là dòng i cột E.
3. Tìm dòng cuối (The "Last Row" Technique)
Đây là dòng code quan trọng nhất trong xử lý dữ liệu động.
Dim lastRow As Long
' Tìm dòng cuối cùng có dữ liệu tại cột A
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
CHƯƠNG 4: CẤU TRÚC ĐIỀU KHIỂN (LOGIC)
1. Vòng lặp For (Loop)
Duyệt qua từng dòng dữ liệu.
Dim i As Long
For i = 2 To lastRow
' Làm gì đó với từng dòng i
Cells(i, 3).Value = Cells(i, 1).Value * Cells(i, 2).Value
Next i
2. Câu lệnh điều kiện (If... Then)
If Cells(i, 3).Value > 1000000 Then
Cells(i, 4).Value = "VIP"
Cells(i, 4).Interior.Color = vbYellow ' Tô màu vàng
Else
Cells(i, 4).Value = "Thường"
End If
CHƯƠNG 5: CÁC KỸ THUẬT NÂNG CAO CẦN BIẾT
1. Tăng tốc độ Code (Optimization)
VBA mặc định sẽ cập nhật màn hình mỗi khi code chạy, làm chậm quá trình. Hãy dùng mẫu này:
Sub CodeChayNhanh()
Application.ScreenUpdating = False ' Tắt màn hình
Application.Calculation = xlCalculationManual ' Tắt tự động tính toán
' --- Code của bạn ở đây ---
Application.Calculation = xlCalculationAutomatic ' Bật lại
Application.ScreenUpdating = True ' Bật lại
End Sub
2. Xử lý lỗi (Error Handling)
On Error GoTo LoiHandler
' Code có thể gây lỗi (ví dụ chia cho 0)
x = 10 / 0
Exit Sub ' Thoát nếu không lỗi
LoiHandler:
MsgBox "Có lỗi xảy ra: " & Err.Description
End Sub
3. Debug (Sửa lỗi)
F8: Chạy từng dòng lệnh để xem code hoạt động thế nào.
Immediate Window (Ctrl + G): Cửa sổ để in thử giá trị. Gõ
?Range("A1").Valuerồi Enter để xem giá trị A1.
CHƯƠNG 6: BÀI TẬP THỰC HÀNH MẪU
Bài toán: Bạn có danh sách nhân viên. Cần duyệt danh sách, nếu ai ở phòng "Sale" thì copy sang sheet "SaleTeam".
Sub LocDuLieuSale()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim lastRow As Long, i As Long, destRow As Long
' Gán biến cho gọn
Set wsSource = ThisWorkbook.Sheets("TongHop")
Set wsDest = ThisWorkbook.Sheets("SaleTeam")
' Xóa dữ liệu cũ ở sheet đích (giữ lại tiêu đề dòng 1)
wsDest.Range("A2:Z10000").ClearContents
lastRow = wsSource.Cells(Rows.Count, 1).End(xlUp).Row
destRow = 2 ' Dòng bắt đầu ghi ở sheet đích
For i = 2 To lastRow
If wsSource.Cells(i, "B").Value = "Sale" Then ' Giả sử cột B là Phòng ban
' Copy toàn bộ dòng i
wsSource.Rows(i).Copy Destination:=wsDest.Rows(destRow)
destRow = destRow + 1
End If
Next i
MsgBox "Đã lọc xong!"
End SubLập trình VBA trong Excel
Đây là một trong những sách lập trình Excel bằng VBA bằng tiếng Việt hàng đầu, dành cho người mới bắt đầu muốn tiếp cận VBA mà không gặp rào cản ngôn ngữ. Cuốn sách bắt đầu từ những khái niệm cơ bản như biến, vòng lặp và hàm, sau đó dần dẫn dắt bạn vào các chủ đề phức tạp hơn như xử lý sự kiện, tạo form giao diện người dùng, kết nối VBA với cơ sở dữ liệu bên ngoài như SQL.
Điểm độc đáo là phần ví dụ thực tế được lấy từ các tình huống kinh doanh Việt Nam, chẳng hạn như tự động hóa báo cáo doanh thu hàng tháng hoặc phân tích dữ liệu bán hàng từ các file CSV.
Đối tượng phù hợp: Người mới bắt đầu, nhân viên văn phòng sử dụng Excel hàng ngày.Điểm nổi bật: Hơn 200 ví dụ code kèm giải thích chi tiết, cộng với phần bài tập thực hành để bạn tự kiểm tra tiến độ. Cuốn sách còn thảo luận về cách tối ưu hóa code VBA để tránh lỗi phổ biến như "out of memory" khi xử lý dữ liệu lớn.
Mẹo học nhanh nhất:
Đừng cố nhớ hết lệnh. Hãy sử dụng chức năng Record Macro:
Bấm Record Macro.
Thao tác thủ công trên Excel (ví dụ: tô màu, lọc, xóa dòng).
Bấm Stop Recording.
Vào xem code Excel vừa sinh ra (
Alt+F11->Module).Sửa lại code đó cho gọn (bỏ những đoạn thừa).
https://learn.microsoft.com/en-us/office/vba/library-reference/concepts/getting-started-with-vba-in-office
Nhận xét
Đăng nhận xét