28
As For Mid Print String
Binary Friend New Private Then
ByRef Get Next Property Time
ByVal Input Nothing Public To
Date Is Null Resume True
Else Len On Seek WithEvents
Empty Let Option Set
Error Lock Optional Static
False Me ParamArray Step
Các từ khóa là những từ được dùng riêng cho những chức năng khác nhau trong ngôn ngữ lập
trình, ví dụ từ khóa “
Private” hạn chế phạm vi sử dụng của biến hay chương trình con. Do đó
việc đặt tên (biến, chương trình con) bắt buộc phải khác so với các từ khóa, nếu không sẽ phát
sinh lỗi cú pháp.
Hình III-7: VBA IDE báo lỗi do tên biến trùng tên với từ khóa
5. Các kiểu dữ liệu cơ bản
Khi một chương trình vận hành, nó sẽ tác động và làm thay đổi giá trị của một vài thông số
trong chương trình, ví dụ trong chương trình giải phương trình bậc 2, các thành phần trong
phương trình:
y=ax2+bx+c sẽ cần thay đổi giá trị khi chương trình hoạt động. Như vậy giá trị
của các thông số này có nhu cầu thay đổi trong những lần hoạt động khác nhau của chương
trình cũng như trong một lần hoạt động nào đó, ví dụ giá trị của y sẽ thay đổi khi ta thay đổi giá
trị của a trong phương trình trên. Chính bởi nhu cầu thay đổi giá trị này mà người ta đưa khái
niệm “biến” để mô tả
sự “động” của những thông số này. Với mỗi biến, giá trị của nó luôn
được quy định là phải thuộc một kiểu dữ liệu nào đó, ví dụ giá trị của y trong phương trình trên
phải là kiểu số thực. Do ngôn ngữ lập trình được thiết kế để thực hiện nhiều nhiệm vụ khác
C
C
Ơ
Ơ
B
B
Ả
Ả
N
N
V
V
Ề
Ề
N
N
G
G
Ô
Ô
N
N
I
I
S
S
U
U
A
A
L
L
B
B
A
A
S
S
I
I
C
C
29
Ø
Ø
và từ 1.401298E-45 đến 3.402823E38
Double 8 bytes -1.79769313486231E308 đến -4.94065645841247E-324
và từ 4.94065645841247E-324 đến 1.79769313486232E308
Currency 8 bytes Từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807
5.4. Kiểu mảng (array)
Khi gặp trường hợp phải sử lý một loạt các biến tương tự như nhau, ví dụ các phần tử của một
ma trận, nếu ta phải đặt tên khác nhau cho tất cả các biến này thì rất bất tiện, thay vào đó ta có
thể dùng kiểu mảng để đặt tên chung cho cả nhóm các phần tử đó và khi nào cần sử dụng từng
phần tử ta sẽ gọi tên theo chỉ số của chúng trong m
ảng.
‘Khai báo mảng
Dim Matrix_1(10) As Double
Mảng Matrix_1 trên có 11 phần tử liên tục được đánh số từ 0 đến 10 (ma trận có 1 hàng và 11
cột). Khi sử dụng ta chỉ việc gọi phần tử cần dùng theo chỉ số tương ứng. 30
‘Gán giá trị 100 cho phần tử thứ 2
Matrix_1(1)=100
‘Gán giá trị 100 cho phần tử cuối cùng
Matrix_1(10)=100
Ta cũng có thể cố định phạm vi chỉ số của mảng bằng cách khai báo như sau:
‘Khai báo mảng
Dim Matrix_2(1 To 10) As Double
Lúc này chỉ số của mảng Matrix_2 sẽ bắt đầu từ 1 và mảng này có 10 phần tử.
‘Gán giá trị 200 cho phần tử thứ 2
Matrix_2(2)=200
‘Gán giá trị 200 cho phần tử cuối cùng
Matrix_2(10)=200
Ví dụ sau khai báo và sử dụng (gán giá trị cho phần tử) một ma trận 3 hàng 5 cột
A(1) = 100: A(2) = 200
‘ Định lại kích thước cho mảng A: mảng hai chiều với 3x3=9 phần tử
Redim A(1 to 3, 2 to 4) as Long
Sau dòng cuối cùng này, toàn bộ giá trị của mảng A cũ (có A[1]=100 và A[2]=200) sẽ bị
xóa bỏ và tất cả các phần tử mới của mảng A (9 phần tử) sẽ nhận giá trị mặc định (thường
được gán bằng 0).
Ø
Ø
Giá trị cũ của các phần tử mảng sẽ được giữ lại khi cả hai điều kiện sau thỏa mãn:
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
I
I
I
I
N
N
N
N
G
G
Ữ
Ữ
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
Sử dụng lệnh ReDim với từ khóa Preserve.
Sự thay đổi kích thước mảng chỉ được thực hiện ở biên trên của chiều cuối cùng của
mảng, nghĩa là các phần tử cần giữ lại giá trị có chỉ số không đổi ngay cả khi mảng
được định lại kích thước.
‘Khai báo mảng động A
Dim A() As Long
‘Gán kích thước cho mảng A
ReDim A(1 To 3, 1 To 3) As Long
‘Gán giá trị cho phàn tử của mảng A
A(1,1) = 100: A(1,2) = 200
A(2,1) = 150: A(2,2) = 250
‘Định lại kích thước cho mảng A, giữ lại giá trị ban đầu
‘của các phần tử, lưu ý đến phạm vi của mảng mới
ReDim Preserve A(1 To 3, 1 To 5) As Long
Hình III-8: Các phần tử có thể giữ lại giá trị ban đầu và các phạm vi có thể thay đổi kích
thước của mảng động
Trong ví dụ trên, các phần tử của mảng A được giữ lại giá trị sau khi kích thước của mảng
được thay đổi lại. Lưu ý, ta chỉ có thể giữ lại giá trị của mảng ban đầu khi sự mở rộng được
thực hiện ra biên cuối cùng của nó như hình trên.
5.5. Kiểu chuỗi (String)
Chuỗi là một hàng bao gồm các ký tự liên tục nhau, các ký tự ở đây rất đa dạng: có thể là chữ
5.7. Kiểu Variant
Kiểu Variant là một kiểu dữ liệu đặc biệt có thể chứa tất cả các loại dữ liệu, ngoại trừ kiểu
chuỗi có chiều dài cố định. Kiểu Variant cũng có thể chứa các giá trị đặc biệt như
Empty,
Error, Nothing và Null.
Tuy kiểu dữ liệu Variant có vẻ tiện dụng nhưng khi sử dụng một cách quá thoải mái thì nguy cơ
gây lỗi của loại biến này là rất lớn, đặc biệt khi thao tác với các toán tử.
Dim V As Variant
‘ Gán biến V với một chuỗi
V = “String”
‘ Gán biến V với một số
V = 16
‘ Gán biến V với giá trị kiểu logic
V = True
‘ Gán biến V với một dữ liệu kiểu thời gian
V = #01/06/2007#