58
Public Static Sub StPro()
Dim a As Long
Dim b As Long
a = a + 1
b = b + 1
a = a + b
Debug.Print "Lan chay " & Str(b)
Debug.Print " ", "a=" & Str(a), "b=" & Str(b)
End Sub
Kết quả sau 2 lần chạy chương trình con như sau:
CHÚ Ý Các biến tĩnh thường được sử dụng khi muốn lưu trữ kết quả những lần chạy của
chương trình con. Chú ý rằng dù biến trong chương trình con là biến thông thường hay
biến tĩnh thì vẫn luôn mang tính chất cục bộ.
9.5. Cách thức gọi chương trình con.
Với trường hợp dự án (Project) gồm nhiều thành phần (các mô-đun chuẩn, các UserForm,…)
có chứa mã lệnh, nghĩa là ở đó có thể xây dựng hoặc có nhu cầu sử dụng chương trình con, thì
trong cùng một mô-đun, không được phép xây dựng hai chương trình con trùng tên nhau,
nhưng quy định này không áp dụng cho các mô-đun khác nhau, nghĩa là có thể tồn tại hai
chương trình con có tên giống hệt nhau ở hai mô-đun khác nhau. Trong trường hợp trùng tên
này, khi muốn sử dụng chương trình con nào thì phải chỉ rõ nơ
i chứa nó, và tốt nhất, khi sử
dụng bất cứ chương trình con nào của mô-đun khác thì nên chỉ rõ cả tên mô-đun đó.
Gọichươngtrìnhcondạnghàm(Function)
Khi gọi chương trình con dạng hàm (
Function), danh sách tham số phải được đặt trong cặp
kí tự “( )” sau tên chương trình con.
<Tên_mô-đun>.<Tên_hàm>(<danh_sách_tham_số>)
I
I
:
:
C
C
Ơ
Ơ
B
B
Ả
Ả
N
N
V
V
Ề
Ề
N
N
G
G
H
H
V
V
I
I
S
S
U
U
A
A
L
L
B
B
A
A
S
S
I
I
C
C
Ngay khi gặp hai hàm này trong thân của chương trình con, toàn bộ các dòng lệnh phía sau nó
sẽ bị bỏ qua và chương trình sẽ thoát ngay khỏi chương trình con đó.
10. Tổ chức các chương trình con theo hệ thống các mô-đun
chuẩn
Với việc thiết kế hệ thống theo phương pháp cấu trúc hóa, toàn bộ chương trình thường được
chia thành các khối chương trình nhỏ hơn, mỗi khối chương trình đảm nhận một chức năng
chung nào đó. Tiếp theo, để dễ dàng cho việc xây dựng chương trình, các chức năng chung lại
được chia thành các phần nhỏ hơn nữa, và lặp lại cho đến khi nào mỗi phần này có thể minh
họa bằng một chươ
ng trình con. Trong lập trình VBA, các khối chức năng thường được tổ chức
thành các mô-đun chuẩn (
Module). Trong mô-đun chuẩn sẽ bao gồm các chương trình con
(hàm và thủ tục) phản ánh sự chi tiết hoá cho các khối chức năng này. Ngoài ra, trong mô-đun
chuẩn người dùng có thể khai báo các kiểu dữ liệu tự định nghĩa, các biến dùng chung, các
hằng số, …
Ví dụ: để xây dựng một chương trình kiểm toán mặt cắt cột BTCT, có thể xây dựng các mô-
đun và các chương trình con theo hình vẽ dưới đây dưới đây 60 Hinh_Hoc
(Module)
TinhDTHH_MCatBT
TinhDTHH_MCatCT
TinhDTHH_TinhDoi
Tinh_Duyet
(Module)
LapTH_TaiTrong
B
B
Ả
Ả
N
N
V
V
Ề
Ề
N
N
G
G
Ô
Ô
N
N
N
N
G
G
U
U
A
A
L
L
B
B
A
A
S
S
I
I
C
C
61
Hình III-16: Tổ chức dự án theo cấu trúc chức năng
11. Làm việc với UserForm và các thành phần điều khiển
11.1. Các vấn đề chung
Trong một dự án VBA, các mô-đun chuẩn cho phép xây dựng các khối chương trình xử lý dữ
liệu hoặc các khai báo về dữ liệu. Sự giao tiếp nhập-xuất dữ liệu giữa người dùng và chương
trình có thể được thực hiện thông qua giao diện của ứng dụng nền. Tuy nhiên, trong nhiều
trường hợp giao diện nhập-xuất dữ liệu của ứng dụng nền chưa thể đáp ứng đượ
chương trình.
Đ
iều khiển cho
phép nhập dữ
liệu dạng văn
bản
Đ
iều khiển cho
phép người
dùng ra lệnh
thông qua việc
kích chuột.
Đ
iều khiển cho
phép chèn hình
ảnh minh hoạ.
Điều khiển lựa chọn dữ liệu 62
2. Xác định cách thức và trình tự tương tác của người sử dụng trên giao diện: để có thể bố trí
các điều khiển sao cho thuận tiện đối với người dùng, ví dụ như theo thói quen điều khiển
của đa số người sử dụng là từ trái sang phải, từ trên xuống dưới.
3. Xác định số lượng UserForm cần phải tạo cho quá trình nhập dữ liệu cũ
ng như việc hiển thị
kết quả: chỉ nên sử dụng vừa đủ và phân theo chủ đề của công việc, ví dụ nên phân tách
giao diện nhập dữ liệu với giao diện trình bày kết quả và các điều khiển (nút bấm) khác.
4. Xác định các loại dữ liệu cần nhập vào, các dữ liệu theo tình huống và các minh hoạ bằng
hình ảnh kèm theo để giải thích rõ cho người sử dụng ý nghĩa của các thông s
ố cần được