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
Để 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.
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.
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!