Site logo
Tác giả
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Ngày xuất bản
Ngày xuất bản

Biến và kiểu dữ liệu trong VBA – Hướng dẫn đầy đủ cho người mới bắt đầu

Trong lập trình VBA, biến (variables) là một phần không thể thiếu để lưu trữ dữ liệu tạm thời trong quá trình chương trình thực thi. Hiểu đúng về kiểu dữ liệu (data types) sẽ giúp bạn viết code hiệu quả, tránh lỗi và tối ưu hiệu năng.

Bài viết này sẽ hướng dẫn bạn:

  • Cách khai báo biến
  • Các kiểu dữ liệu thường dùng trong VBA
  • Mẹo sử dụng biến đúng cách
  • Ví dụ minh họa

1. Cách khai báo biến trong VBA

Dùng từ khóa Dim để khai báo biến:

Dim userName As String
Dim age As Integer
Dim isActive As Boolean

🔹 Dim là viết tắt của “Dimension” – dùng để khai báo biến cục bộ trong thủ tục/hàm.

🔹 Ngoài Dim, còn có:

  • Public: khai báo biến toàn cục
  • Private: khai báo biến dùng trong module

2. Các kiểu dữ liệu phổ biến trong VBA

Kiểu dữ liệu Mô tả Phạm vi giá trị
String Chuỗi ký tự Tối đa ~2 tỷ ký tự
Integer Số nguyên nhỏ -32,768 đến 32,767
Long Số nguyên lớn -2,147,483,648 đến 2,147,483,647
Double Số thực chính xác cao Rất lớn
Single Số thực chính xác vừa Trung bình
Boolean Giá trị đúng/sai True hoặc False
Date Ngày và giờ 01/01/100 - 31/12/9999
Variant Tự động xác định kiểu Đa dụng (nhưng chiếm nhiều bộ nhớ)
Object Dùng để lưu trữ object (form, recordset,...) -

3. Ví dụ thực tế

Dim fullName As String
Dim birthYear As Integer
Dim currentYear As Integer
Dim age As Integer

fullName = "Nguyễn Văn A"
birthYear = 1990
currentYear = Year(Date)
age = currentYear - birthYear

MsgBox fullName & " hiện tại " & age & " tuổi."

4. Kiểu dữ liệu Object và Variant

🔹 Object

Dùng khi bạn cần lưu các đối tượng như form, recordset, hoặc worksheet.

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Employees")

🔹 Variant

Là kiểu linh hoạt – có thể chứa bất kỳ kiểu dữ liệu nào. Dùng khi bạn không chắc kiểu dữ liệu hoặc cần xử lý linh hoạt.

Dim tempData As Variant
tempData = "Hello"
tempData = 100 ' OK

⚠️ Lưu ý: Dùng Variant quá nhiều sẽ làm chương trình chậm và khó debug hơn.


5. Các mẹo hay khi làm việc với biến

  • ✅ Luôn khai báo rõ kiểu dữ liệu để tránh lỗi Type mismatch
  • ✅ Đặt tên biến có ý nghĩa, dùng camelCase: totalAmount, isCompleted
  • ✅ Dùng Option Explicit để bắt buộc khai báo biến, tránh lỗi chính tả:
Option Explicit
  • ✅ Gán giá trị ban đầu khi có thể:
Dim total As Long: total = 0

6. Một số lỗi liên quan đến biến

Lỗi Nguyên nhân Cách xử lý
Type mismatch Gán sai kiểu dữ liệu Dùng hàm chuyển đổi như CLng, CStr
Variable not defined Thiếu Dim khi bật Option Explicit Khai báo đầy đủ
Overflow Giá trị vượt giới hạn kiểu dữ liệu Đổi sang kiểu lớn hơn (IntegerLong)

7. Bài tập thực hành

Viết chương trình nhập năm sinh và hiển thị số tuổi hiện tại:

Dim birthYear As Integer
Dim currentYear As Integer
Dim age As Integer

birthYear = InputBox("Nhập năm sinh:")
currentYear = Year(Date)
age = currentYear - birthYear

MsgBox "Bạn hiện tại " & age & " tuổi."

📌 Tổng kết

Thành phần Ghi nhớ
Khai báo biến Dùng Dim, Public, Private
Kiểu dữ liệu Dùng đúng mục đích: String, Long, Boolean,...
Debug Dùng Option Explicit, kiểm tra kiểu dữ liệu kỹ

📚 Bài tiếp theo đề xuất:

  • Câu lệnh điều kiện If...Then...Else trong VBA
  • Các vòng lặp For, Do While, For Each
  • Quản lý dữ liệu với Recordset và Form

Nếu bạn đang học VBA hoặc đã từng gặp lỗi về biến, hãy bình luận câu hỏi của bạn – mình sẽ hỗ trợ và cập nhật thêm ví dụ thực tế trong các bài viết sau nhé!