Sổ Tay Lập Trình Xử Lý Excel: Sách lập trình VBA trong EXCEL Full

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ụ:

  1. 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.

  2. Mở trình soạn thảo: Nhấn Alt + F11.

  3. 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.

  1. Application: Chính là phần mềm Excel.

  2. Workbook: File Excel (ThisWorkbook: file đang chứa code, ActiveWorkbook: file đang mở).

  3. Worksheet: Một sheet cụ thể (Sheets("Data"), ActiveSheet).

  4. Range/Cells: Ô dữ liệu.

Quy tắc "Dấu Chấm": Đi từ cha xuống con.

VBA
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 ApplicationWorkbook.


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.

VBA
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.

VBA
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.

VBA
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)

VBA
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:

VBA
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)

VBA
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").Value rồ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".

VBA
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 Sub

Lậ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:

  1. Bấm Record Macro.

  2. Thao tác thủ công trên Excel (ví dụ: tô màu, lọc, xóa dòng).

  3. Bấm Stop Recording.

  4. Vào xem code Excel vừa sinh ra (Alt+F11 -> Module).

  5. Sửa lại code đó cho gọn (bỏ những đoạn thừa).

  6. https://learn.microsoft.com/en-us/office/vba/library-reference/concepts/getting-started-with-vba-in-office



Nhận xét