Nếu bạn đã từng lập trình bất kỳ macro nào, có lẽ bạn đã quen với cách xác định biến bằng từ khóa Dim. Ví dụ, bạn có thể định nghĩa một biến số nguyên với tên MyVar như sau:

Dim MyVar As Integer

Điều này rất đơn giản và sẽ hoạt động tốt trong mã của bạn. Để lưu một vài dòng trong mã của bạn, bạn có thể bị cám dỗ để xác định nhiều biến trên mỗi dòng:

Dim x, y, z As Integer

Trong một số phiên bản của ngôn ngữ BASIC, điều này sẽ xác định và khởi tạo ba biến, mỗi biến dưới dạng số nguyên. Trong VBA, nó cũng chạy đúng cách và không có lỗi nào được tạo ra. Tuy nhiên, có một vấn đề nhỏ – chỉ có biến cuối cùng (z) thực sự được định nghĩa là một số nguyên.

Bạn có thể thấy cách này hoạt động bằng cách sử dụng mã sau:

Sub DimTest()

Dim x, y, z As Integer     Dim sTemp As String

sTemp = "x is type " & VarType(x) & vbCrLf     sTemp = sTemp & "y is type " & VarType(y) & vbCrLf     sTemp = sTemp & "z is type " & VarType(z)



MsgBox sTemp End Sub

Khi bạn chạy macro, hộp thông báo hiển thị rằng loại biến cho x và y là 0, có nghĩa là biến đó là một biến thể (kiểu dữ liệu mặc định cho các biến chưa được khai báo). Chỉ hộp thư cuối cùng (dành cho z)

hiển thị kiểu biến là 2, nghĩa là một số nguyên.

Giải pháp là đảm bảo rằng bạn khai báo một biến trên mỗi dòng, hoặc sử dụng cú pháp đầy đủ cho từng biến, như sau:

Dim x As Integer, y As Integer, z As Integer

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12427) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.