Cách khai báo và sử dụng biến dữ liệu trong VBA Excel

Biến dữ liệu là một đại lượng đại diện cho một giá trị và có thể thay đổi. Trong VBA Excel, biến dữ liệu được dùng để lưu trữ thông tin tạm thời và xử lý các giá trị trung gian. Khai báo biến hợp lý giúp bạn giúp bạn có thể dễ dàng xử lý, trao đổi dữ liệu với các thành phần trong Excel bằng VBA.

Nếu bạn mới bắt đầu với VBA Excel thì hãy cùng mình học qua cách khai báo và cách sử dụng được chia sẻ trong bài viết này nhé.

Cách khai báo biến dữ liệu trong VBA Excel

bien-du-lieu-vba-excel-148-1

Để khai báo một biến, bạn sử dụng cú pháp sau:

Dim <tên biến> As <Kiểu dữ liệu>

Trong đó:

  • tên biến: là một tên bất kỳ bạn có thể đặt và theo một số quy tắc như: không sử dụng ký hiệu đặc biệt (@,!,#,$,%,-,…), ký tự đầu tiên là chữ, không phân biệt chữ hoa/ thường.
  • Kiểu dữ liệu: là kiểu định dạng dữ liệu cho tên biến.
Dưới đây là bảng tổng hợp kiểu dữ liệu trong VBA.
Kiểu dữ liệu Định dạng Mô tả
Byte Số Vùng giá trị từ 0 đến 255.
Integer Số Vùng giá trị từ -32,768 đến 32,767.
Long Số Vùng giá trị từ – 2,147,483,648 đến 2,147,483,647.
Currency Số Vùng giá trị từ –922,337,203,477.5808 đến 922,337,203,685,477.5807
Single Số Vùng giá trị từ -3.402823E38 đến 3.402823E38.
Double Số Vùng giá trị từ 1.79769313486232E308 đến 4.94065645841247E–324
String Văn bản Văn bản.
Date Date Date, Time: yyyy,MM,dd, hh, mm, ss
Boolean Boolean True hoặc False.
Object Object Access object, ActiveX component hoặc Class object
Variant Tùy chọn Giống kiểu Double nhưng có thể dùng cho cả String
Một số ví dụ về cách khai báo biến dữ liệu:

Khai báo kiểu số:

Dim so1 As Integer

Khai báo số kiểu thập phân và gán giá trị:

Dim so1 as Double
so1 = 9.01

Khai báo kiểu văn bản và gán giá trị:

Dim str as String
str="VBA Excel"

Khai báo và gán thời gian hiện tại vào biến:

Dim dt As Date
dt = Now()
MsgBox dt

Ngoài ra, bạn nên tham khảo  Cách khai báo Sheets, Range, Cells trong VBA Excel.

Cách sử dụng biến dữ liệu trong VBA Excel

Có 2 kiểu khai báo biến được sử dụng:

  • Biến toàn cục: là biến có thể được sử dụng trong toàn bộ Module.
  • Biến cục bộ: là biến chỉ được sử dụng trong hàm được khai báo.
Ví dụ 1: Khai báo biến toàn cục

💡 Nếu các biến được sử dụng lặp lại ở các hàm bạn hãy sử dụng biến toàn cục.

Để dễ quản lý biến toàn cục, bạn nên khai báo các biến toàn cụ này ở vị trí trên cùng của Module.

'Khai báo biến toàn cục: so1, so2, so3 kiểu Integer
Dim so1 As Integer
Dim so2 As Integer
Dim so3 As Integer
'Hàm tính tổng 3 số
Sub tong3so()
'Gán giá trị cho từng biến
so1 = 3
so2 = 4
so3 = 5
MsgBox "Tong 3 so là: " & so1 + so2 + so3
End Sub
'Hàm tích 3 số
Sub tich3so()
so1 = 3
so2 = 4
so3 = 5
MsgBox "Tich 3 so là: " & so1 * so2 * so3
End Sub
Ví dụ 2: Khai báo biến cục bộ

Khác với biến toàn cục, khi bạn khai báo biến cục bộ thì biến đó chỉ được sử dụng trong hàm đó. Vì vậy các biến này sẽ không bị ảnh hướng đến nhau nếu tên biến giống nhau.

'Hàm tổng 3 số
Sub tong3so()
Dim so1 As Integer, so2 As Integer, so3 As Integer
so1 = 3
so2 = 4
so3 = 5
MsgBox "Tong 3 so là: " & so1 + so2 + so3
End Sub
'Hàm tích 3 số
Sub tich3so()
Dim so1 As Integer,so2 As Integer,so3 As Integer
so1 = 3
so2 = 4
so3 = 5
MsgBox "Tich 3 so là: " & so1 * so2 * so3
End Sub
Ví dụ 3: Khai báo biến là hằng số

Trong VBA Excel, bạn có thể khai báo biến dữ liệu cho hằng số với giá trị không thay đổi.

'khai báo hằng số pi=3.14
Const pi As Double = 3.14
Sub dien_tich_hinh_trong()
Dim r As Double
r = 3.5 'cm
MsgBox "Dien tich hinh tron là: " & r * r * pi
End Sub
Ví dụ 4: Khai báo biến dữ liệu trực tiếp tại dòng khai báo tên hàm.

Trong các hàm chức năng, bạn có thể khai báo biến dữ liệu trực tiếp tại dòng khai báo tên hàm. Ngoài ra, kiểu khai báo này còn được áp dụng khi bạn muốn truyền biến giữa các hàm với nhau.

bien-du-lieu-vba-excel-148-2

Function tinh_tuoi(namsinh As Integer)
Dim tuoi As Integer
Dim namhientai As Integer
namhientai = Year(Now())
tinh_tuoi = namhientai - namsinh
End Function
Ví dụ 5: Lấy giá trị từ Cells vào biến và gộp chuỗi

Trong thực tế khi xử lý dữ liệu Excel bằng VBA, bạn sẽ có khá nhiều dữ liệu đầu vào là giá trị từ các Cells. Nếu không khai báo biến bạn vẫn có thể lấy và gán giá trị được nhưng đoạn lệnh sẽ dài và khó theo dõi. Nhưng khi khai báo biến hợp lý, bạn sẽ dễ dàng thao tác xử lý hơn.

Đễ rõ hơn trong ví dụ dưới đây, mình sẽ khai báo các biến (ho, ten và tuoi), gán giá trị từ các Cells vào và sau đó hiển thị ra MsgBox.

bien-du-lieu-vba-excel-148-3

Kết quả: Đoạn lệnh gộp chuỗi để hiện ra MsgBox sẽ gọn và dễ thao thác hơn nếu gộp chuỗi trực tiếp từ các Cells.

Sub gan_du_lieu()
'khai bao
Dim ws As Worksheet
Dim ho As String
Dim ten As String
Dim tuoi As Integer
Dim namhientai As Integer
'gan du lieu
Set ws = Sheets(1)
ho = ws.Range("A2").Value
ten = ws.Range("B2").Value
tuoi = ws.Range("D2").Value
MsgBox "Ban " & ho & " " & ten & " nam nay " & tuoi & " tuoi"
End Sub

OK! Trên là khái niệm và các ví dụ cơ bản về biến dữ liệu trong VBA Excel. Tuy đây là các kiến thức khá cơ bản nhưng khi hiểu và nắm được, bạn sẽ dễ dàng nắm được các phần phức tạp hơn trong VBA.

Hy vọng bài chia sẻ này hữu ích với các bạn.

Chúc các bạn thành công!

BÌNH LUẬN

Please enter your comment!
Please enter your name here