Chương NGON NGU VISUAL BASIC FOR Trong chương này sẽ hướng dẫn bạn cách sử dụng ngôn ngữ Visual Basic for Applications VBA để điều khiển các biến cố trên các biểu mẫu hoặc các báo cáo
Trang 1
Da DAI HOC QUOC GIA TP HO CHi MINH
TRUONG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
NGUYEN THIEN TAM
Trang 2TK 01 TH(V)
ĐHQG HCM-oe 97-11ÐHQGTPHCM TH.TK.878 ~ 06(T)
Trang 3
Trong thời đại ngày nay, máy tính đã có mặt trong mọt
lĩnh uục xã hội, đặc biệt nó là một công cụ hỗ trợ không thể
thiếu trong công tác quản lý Với lĩnh uực xử lý thông tin uùà
các số liệu thì yêu cầu hàng đầu là : Nhanh chóng —
Chính xúc - Lưu trữ gon va tinh Bao m4t cao
Hiện nay có rất nhiều phân mềm cơ sở đữ liệu khúc
nhau, để giúp cho các bạn có thể lựa chọn uùà sử dụng tốt một phân mềm, chúng tôi xin giới thiệu phân mềm quản trị
cơ sở dữ liệu quan hệ — “Microsoft Access 2003” — mét phan mềm kha manh, dé sit dụng uà có nhiều ưu điểm so uới
Microsoft Access 97, 2000 trước đó Trong giáo trình này,
chúng tôi sẽ cung cấp cho các bạn một số hiến thức cơ bản
uê khái niệm cơ sở dữ liệu quan hệ uà một số kỹ năng trong
Microsoft Access để giúp các bạn có thể xây dựng nhanh cúc ứng dụng nhỏ, nhằm phục uụ công tác quản lý của cóc bạn
được tốt hơn Giáo trình này gồm có ba tập:
$ Tp 1: gôm có năm chương (1 - 5), giới thiệu cho các bạn biết uễ khái niệm uề bảng, quan hệ các bảng, các
đối tượng có trong tập tin cơ sở dữ liệu Access, sit dung công cụ trình thông mình để tạo nhanh các đốt tượng
này
Trang 4lệnh, cách tạo lập các báo biểu theo nhiều dạng khác
sỞ dụng trên môi trường nhiều người dùng
Dù đã cố gắng biên soạn kỹ, uới mong muốn hỗ trợ các
bạn tiếp cận một công cụ phần mềm tiên tiến, song chốc rằng cuốn sách này không tránh khỏi những sơ sót Chúng tôi mong nhận được nhiều ý kiến đóng góp của các bạn
Cuối cùng xin chúc cúc bạn thành công trong uiệc xây _ dựng các ứng dụng tin học trong công tác quản lý
TRUNG TÂM TÍN HỌC - TRƯỜNG ĐHKHTN - ĐHQG TP.HCM
Trang 5
Chương
NGON NGU VISUAL BASIC FOR
Trong chương này sẽ hướng dẫn bạn cách sử dụng ngôn ngữ
Visual Basic for Applications (VBA) để điều khiển các biến cố trên
các biểu mẫu hoặc các báo cáo, và cách tạo ra một hàm tùy biến của riêng mình Ngoài ra cũng giới thiệu đến với bạn những khái niệm cơ bản của ngôn ngữ lập trinh Visual Basic for Applications -
VISUAL BASIC FOR APPLICATIONS LÀ GÌ ?
Visual Basic for Applications là ngôn ngữ lập trình cho Miscrosoft Office và các ứng dụng có liên kết với nó Bạn sử
dụng nó y như cách sử dụng tập lệnh để có thể liên kết các
đối tượng trong ứng dụng của bạn lại với nhau nhằm tạo
thành một hệ thống chương trình mạch lạc Điểm khác biệt là
Visual Basic for Applications cung cấp nhiều sức mạnh và mềm dẻo hơn là tập lệnh
Với Microsoft Access, bạn có thể thực hiện nhiều công: việc khác nhau bằng tập lệnh hoặc ngôn ngữ Visual Basic for
Applications Do đó vấn để là khi nào chúng ta sẽ chọn tập
lệnh hoặc sẽ chọn Visual Basic for Applications ? Sự chọn lựa này sẽ tùy thuộc vào công việc của chúng ta là muốn làm cái
gì.
Trang 6ll KHI NAO SU DUNG TAP LENH VA VISUAL BASIC
FOR APPLICATIONS
Ban có thé str dung Visual Basic for Applications thay thé
tập lệnh khi bạn thực hiện các công việc sau
Để cho ứng dụng của bạn dễ dàng bảo trì hơn : Bởi vì tập
lệnh là một đối tượng hoàn toàn tách rời riêng lẻ với các
biểu mẫu và các báo cáo sử dụng nó, một ứng dụng
chứa một số lớn các tập lệnh trong các biến cố của các
biểu mẫu và các báo cáo sẽ gây cho bạn khó khăn khi
bảo trì Ngược lại, khi bạn sử dụng Visual Basíc for
Applications để xử lý các biến cố, các đoạn lệnh này sẽ
được xây dựng ngay bên trong các biểu mẫu và các báo
cáo tại đúng các biến cố đó Nếu bạn có di chuyển các
biểu mẫu hoặc báo cáo sang một tập tin cơ sở dữ liệu
Access khác thì các đoạn lệnh này cũng sẽ được mang đi
theo cùng
Tạo ra các hàm của riêng mình : Sử dụng Visual Basic for
Applications bạn cũng có thể tạo ra các hàm của riêng
mình dùng để thực hiện các phép tính vượt quá khả năng
của một biểu thức hoặc thay thế một biểu thức quá phức
tạp mà bạn đã viết trong ứng dụng của mình Thí dụ, tạo
một hàm tính tiền thu lãi cho vay của một hợp đồng dựa
theo một số giá trị như số tiền vay, lãi suất vay, ngày vay,
và ngày đến trả nợ
Che đi các thông báo lỗi : Khi có một sự cố ngoài ý muốn
xảy ra trong khi ứng dụng của bạn đang vận hành thì
Microsoft Access sẽ hiển thị một thông báo lỗi, thông báo
này sẽ làm cho người sử dụng khó hiểu, đặc biệt khi họ
chưa quen sử dụng Microsoft Access Sử dụng Visual
Basic for Applications, bạn có thể phát hiện các lỗi này
khi nó xảy ra và sẽ hiển thị các thông báo lỗi của riêng
mình bằng tiếng Việt rõ ràng, hoặc có thể buộc ứng dụng
Trang 7
Chương 9 : Ngôn ngữ Visual Basic for Applications 3
làm một cái gì khác Chúng ta nén si dung Visual Basic
for Applications dé diéu khiển các lỗi theo ý mình
e Tạo hoặc sửa đổi các đối tượng : Hầu hết, chúng ta có
- thể tạo hoặc sửa đổi các đối tượng bằng cách trực tiếp
mở đối tượng ra ở chế độ thiết kế Trong một vài trường hợp đặc biệt chúng ta phải sử dụng Visual Basic for Applications để thực hiện việc thay đổi thuộc tính của các
đối tượng trên biểu mẫu hoặc báo cáo ngay khi nó đang
được chạy Thí dụ: Trên một biểu mẫu thể hiện các
phòng hiện có trong một khách sạn dưới dạng các nút lệnh (nghĩa là nếu hiện tại khách sạn có 5 phòng thì trên
biểu mẫu có 5 nút lệnh) Tuy nhiên nếu số phòng có thể
tăng hoặc giảm trong bảng danh mục phòng thì các nút
lệnh trên biểu mẫu cũng sẽ thay đổi theo Công việc này
chỉ thực hiện được bằng ngôn nau Visual Basic for
Applications ma thdi
se Thực hiện các hành động cấp hệ thống: Bạn có thể sử
dụng tập lệnh RunApp để có thể kích hoạt một ứng dụng khác chạy trên môi trường Windows hoặc MS-DOS ngay bên trong ứng dụng Microsoft Access, nhưng bạn không
thể sử dụng tập lệnh này để làm nhiều việc khác bên
ngoài Microsoft Access Sử dụng Visual Basic for Applications, bạn có thể kiểm tra xem một tập tin có tổn tại trong hệ thống của bạn không, sử dụng việc trao đổi
di liéu déng (DDE — Dynamic Data Exchange) dé lién lac với các ứng dụng khác trên Windows thí dụ như là Microsoft Excel, và gọi đến các hàm trong thư viện liên két déng cla Windows (DLL — Dynamic Link Libraries)
« Truy cập vào các bản ghi (record): Chúng ta sử dụng
Visual Basic for Applications để có thể truy cập vào từng
dòng trong một bảng ghi và thể thực hiện các hành động thêm, sửa, xóa mà không cần sử dựng công cụ truy vấn
e _ Gởi các tham số động: Chúng ta có thể gởi vào các tham
số là các giá trị dùng để cung cấp thêm các thông tin mà
Trang 8một hành động yêu cầu phải có Bên trong các hành
động của tập lệnh, chúng ta cũng có thể sử dụng các
tham số, tuy nhiên chúng ta không thể thay đổi giá trị của
các tham số này khi chúng thực hiện
Sau khi xem qua các lý do để có thể sử dụng Visual
Basic for Applications ở trên, có lẽ bạn sẽ lo lắng không còn
lý do nào nữa để bạn có thể sử dụng tập lệnh Tuy nhiên tập
lệnh vẫn còn được sử dụng trong nhiều ứng dụng bởi vì tập
lệnh cho phép chúng ta dễ dàng thực hiện các công việc như :
mở và đóng biểu mẫu, che và hiện thanh công cụ, chúng ta
còn có thể sử dụng tập lệnh nhanh và dễ dàng là nhờ các
tham số của tập lệnh đã thể hiện rõ ràng bên dưới mà không
cần phải nhớ một cách chính xác sác tham số đó Ngoài ra
chúng ta có thể sử dụng tập lệnh đé thực hiện công việc khởi
tạo các phím nhấn chung (một tập lệnh đặc biệt có tên là
AutoKeys) ,
TẠO MỘT THỦ TỤC BIẾN CO (EVENT
PROCEDURE) ĐẦU TIÊN
Thủ tục là các đoạn lệnh mà bạn đã viết bằng ngôn ngữ
Visuai Basic for Applications Bên trong một thủ tục sẽ chứa
đựng một dãy các câu lệnh của Visual Basic for Applications
dùng để thực hiện một hành động hoặc tính toán một giá trị
nào đó Một thủ tục biến cố là một thủ tục sẽ được chạy để
đáp lại cho một biến cố Chúng ta sẽ lấy một thí dụ đơn giản
về thủ tục biến cố Trên biểu mẫu này có một hộp văn bản
(textbox) và nút lệnh (command button)
Trang 9
Chương 9 : Ngôn ngữ Visual Basic for Applications an)
- Khi bạn nhấn vào nút này -
Thủ tục biến cố sẽ thực hiện và hiển thị
câu chào trong hộp văn bản
Hình IX.2 : Màn hình lúc xuất hiện câu chào khi người sử dụng đã
nhấn vào nút lệnh [Say Hello}
Bởi vì tạo ra một thủ tục biến cố là một phần trong công
việc thiết kế biểu mẫu hoặc báo cáo Do đó bước đầu tiên là
chúng ta phải tạo ra biểu mẫu và sắp xếp các điều khiển (control) trên biểu mẫu này (bước này gọi là thiết kế phần
trình bày — layout của biểu mẫu) Trong trường hợp này chúng
ta tạo một biểu mẫu không có các bảng hoặc truy vấn làm dữ
liệu nguồn mà chỉ đưa vào các điều khiển là một hộp văn bản
Trang 10(textbox) va mét nut lệnh (command button) Đoạn lệnh của
chúng ta sẽ tham chiếu đến các điều khiển này thông qua
thuộc tính tên (name) của điều khiển, vì thế chúng ta nên ghi
rõ ràng thuộc tính tên của các điều khiển không nên để tên
mặc định do Microsoft Access tao ra nhu Text0 va
Command1 Để dễ sử dụng và rõ ràng chúng ta đặt tên cho
hộp văn bản la Txt_Message va nút lệnh là Cmd_Hello
Với tên của điều khiển rõ ràng sẽ giúp cho chúng
ta dễ nhớ và dễ hiểu các điều khiển hơn
Hình IX.3 : Xem biểu mẫu ở chế độ thiết kế
Sau khi đã tạo xong biểu mẫu và các điều khiển trên đó,
thay đổi một số thuộc tính của các điều khiển, chúng ta sẽ
viết thủ tục biến cố đầu tiên trong cửa sổ soạn thảo mã lệnh
(module window)
Thực hiện các hành động sau :
- Trong màn hình thiết kế, nhấn chuột phải trên nút lệnh
Cmd_Hello Trên thực đơn tắt chọn chức năng Build
Event Microsoft Access hiển thị hộp thoại chọn bộ thiết
ké (Choose Builder)
Trang 11
Chương 9 : Ngôn ngữ Visual Basic for Applications 7
- Trong danh sách các loại thiết kế, chọn Code Builder và nhấn nút OK để xây dựng thủ tục biến cố Microsoft
Access mở ra cửa sổ soạn thảo mã lệnh và tạo một
- khuôn mẫu cho thủ tục biến cố mặc định của đối tượng
mà bạn đã chọn trong màn hình thiết kế, trong trường
hợp này là thủ tục biến cố Click Khuôn mẫu cho thủ tục
biến cố Click của nút Cmd_Hello được thể hiện minh hoa bén dudi
Cửa sổ soạn thảo mã lệnh
POM ly (8i im _
boolean Compare Database Option Explicit
Private Sub Cmd_Hel lo Cl ick {) End Sub
Hình IX.4 : Cửa sổ soạn thảo bộ mã lệnh
- Đưa vào các đoạn lệnh cần thiết vào giữa hai câu lệnh
Sub và End Sub Chúng ta sẽ đưa vào một lệnh gán
chuỗi văn bản cần thể hiện vào trong hộp văn bản
Txt_Message = "Hello the World !"
- — Lưu và đóng cửa sổ soạn thảo mã lệnh lại.
Trang 12Sau khi bạn lưu lại, Microsoft Access sẽ tạo ra một lệnh
tại biến cố On Click của nút lệnh Cmd_Hello có tên là [Event
Procedure]
Từ bây giờ nút lệnh Cmd_Hello đã có một
thủ tục biến cố được kết vào nó
Hình IX.5 : Tạo thủ tục biến cố cho nút lệnh
Sau khi bạn đã viết xong một thủ tục biến cố đầu tiên, lúc
bây giờ bạn đã có thể chạy nó được rồi Để làm điều này, bạn
phải mở biểu mẫu sang chế độ hiển thị (Form View) và khi đó
nhấn vào nút lệnh Say Hello để cho thủ tục biến cố được thực
hiện, khi đó một chuỗi "Hello the World !* sẽ xuất hiện trong
hộp văn bản
Trang 13
Chuong 9 : Ngén ng@ Visual Basic for Applications 9
IV LÀM VIỆC VỚI BỘ MÃ LỆNH CỦA BIỂU MẪU HOẶC BÁO CÁO
IV.1 Tạo mới hoặc sửa đổi thủ tục biến cố
Theo thí dụ trên chỉ cho chúng ta cách tạo ra một thủ tục
biến cố nhanh, đơn giản bằng cách chọn lệnh Build Event
trong thực đơn tắt ngay tại điều khiển đó Ngoài ra Microsoft
Access còn cung cấp cho chúng ta nhiều cách để xây dựng hoặc sửa đổi các thủ tục biến cố Sau đây là một vài cách:
« Mở biểu mẫu hoặc báo cáo và cửa sổ soạn thảo mã lệnh
cùng một lúc:
Trong cửa sổ cơ sở dữ liệu, chọn biểu mẫu hoặc báo cáo
và sau đó nhấn vào biểu tượng mã lệnh (Code) 8:
trong thanh công cụ Database
e Tạo hay mở bất kỳ thủ tục biến cố nào:
Mở biểu mẫu hay báo cáo ra ở chế độ thiết kế
Cho hiển thị bảng thuộc tính bằng cách nhấn chuột phải tại các vị trí của biểu mẫu hay báo cáo (tại các
điều khiển, phân đoạn) hoặc chọn View > Properties
trên thực đơn
Trong bảng thuộc tính chọn trang Event
Chọn biến cố nào đó cho thủ tục biến cố mà chúng ta
muốn tạo hay sửa đổi trong danh sách các biến cố
Nhấn vào nút xây dựng [ ] bên phải hộp thuộc tính
Trang 14Chương 9 : Ngôn ngữ Visual Basic for Applications 10
Khi nhấn vào để tạo mới hay sửa đổi thủ tục biến cố
N00) 1010211441 0N) g NI
Hình IX.6 : Mở cửa sổ soạn thảo bộ mã lệnh để xem hoặc sửa đổi
các câu lệnh
Nếu như biến cố này đã có một thủ tục biến cố rồi thì
Microsoft Access sẽ mở cửa sổ soạn thảo mã lệnh ra và cho
hiển thị nội dung hiện có của thủ tục biến cố này Ngược lại,
nếu biến cố này rỗng (chưa có gì) thì Microsoft Access hiển thị
hộp thoại chọn bộ thiết kế (Choose Builder) Khi đó nếu muốn
xây dựng thủ tục biến cố thì chúng ta chon Code Builder va
khi đó cửa sổ soạn thảo mã lệnh sẽ xuất hiện
IV.2 Viết các lệnh bên trong thủ tục biến cố
Viết các lệnh trong cửa sổ soạn thảo mã lệnh thì hoàn
toàn cũng giống như bất kỳ một phần mềm soạn thảo văn bản
đơn giản nào (NotePad, Nc) Vẫn có hiển thị con nháy cho
chúng ta biết vị trí hiện hành của chữ mà chúng ta sẽ gõ vào,
vẫn có thể sao chép, di chuyển, xóa các câu lệnh Tuy nhiên
khi bạn mới sử dụng cửa sổ soạn thảo mã lệnh, bạn sẽ có
một số các đặc trưng thuận lợi khi sử dụng các câu lệnh
Visual Basic for Applications một cách có hiệu quả :
Trang 15Chương 9 : Ngôn ngữ Visual Basic for Applications 11
Câu lệnh được xây dựng một cách tự động: Khi bạn gõ vào
một chút ít thành phần câu lệnh Visual Basic for
Applications, Microsoft Access sẽ tự động dò tìm và đưa ra
- danh sách các chọn lựa thích hợp cho các thành phần còn lại của câu lệnh mà chúng ta dang gõ Thí dụ khi chúng ta
đang sử dụng một điều khiển trên biểu mẫu có kiểu là văn
bản (textbox) thì khi đó Microsoft Access sẽ hiển thị ra
một danh sách các thuộc tính và biến cố mà điều khiến đó
có
Access nhận ra
= Txi Message vị BeforeUpdate
—— Khi bạn gõ vào tên của một đối tượng và Microsoft
@& Application =
eG AsianLineBreak -”
‘ga! AutoLabel e&! AutoTab
một danh sách xuất hiện chứa các phương ~~
thức và thuộc tính của đối tượng
Hình IX.7 : Cửa sổ soạn thảo bộ mã lệnh hỗ trợ xây dựng các lệnh
một cách tự động.
Trang 16Để cho cậu lệnh được đầy đủ chúng ta có thể chọn vào
một trong thành phần trong danh sách này hoặc tiếp tục gõ
tiếp câu lệnh Danh sách này sẽ mất đi khi ta nhấn phím ESC
» Xem thông tin nhanh: Khi bạn gõ vào tên một thủ tục hoặc
một phương thức, một lời mách (tip) sẽ tự động hiển thị
danh sách tham số (nếu có) cần thiết của một thủ tục
Private Sub Form_Close()
End MsgBox(Prompt [Buttons As VoMsgBoxStyle = vbOkKOnhy, [726], [HelpFiid, (Contexay 1] As VoMsgBoxResult
© Tự động kiểm tra cú pháp: Khi bạn di chuyển con nháy
sang một dòng mới, Visual Basic for Applications tự động
kiểm tra cú pháp của dòng lệnh hiện hành và sẽ hiển thị
thông báo lỗi nếu tìm thấy
© - Kỹ thuật kéo thả: Nếu bạn muốn di chuyển các dòng lệnh
từ một vị trí này sang một vị trí khác trong một cửa sổ
soạn thảo mã lệnh hoặc qua lại giữa các bộ mã lệnh
(moduie), bạn không cần thiết phải thực hiện động tác sao
chép và dán ra Chỉ cần chọn các đoạn lệnh cần muốn di
chuyển sau đó nắm kéo sang vị trí mới
© Khôi phục các hành động: Biểu tượng Undo Eg để có
khôi phục lại các hành động mà chúng ta đã thực hiện
trong khi soạn thảo bộ mã lệnh Với nút lệnh này bạn có
thể quay lùi lại các thay đổi trước đó
Trang 17
Chương 9 : Ngôn ngữ Visual Basic for Applications 13
IV.3 Di chuyển qua lại giữa các thủ tục
Khi chúng ta đang viết các lệnh trong một thủ tục, chúng
ta có thể di chuyển qua lại các thủ tục bên trong một cửa sổ soạn thảo mã lệnh bằng cách nhấn các tổ hợp phím Ctri+Page Down va Ctrl+Page Up Hon thế nữa, chúng ta có thể chọn đối tượng và các thủ tục hoặc biến cố trên các hộp đối tượng và hộp thủ tục
- Hộp đối tượng: Hiển thị tên của đối tượng được chọn Chọn mũi tên bên phải của hộp đối tượng để xem danh sách tất cả các đối tượng có liên quan đến biểu mẫu, sau
đó chọn một đối tượng trong danh sách này
- — Hộp thủ tục: Hiển thị tên của thủ tục hiện hành tương
ứng với đối tượng bên hộp đối tượng Tương tự như hộp đối tượng, chúng ta có thể chọn một biến cố để tạo thủ tục biến cố cho đối tượng tương ứng Trong danh sách
các thủ tục này nếu biến cố nào đậm thì tại đó bạn đã tạo thủ tực biến cố rồi
Option Compare Datanase nan
Option Explicit Enter
Exit Private Sub Cmd_Hello_C1lilcotFocus
Txt_Hessage = "HelL1O HỘP Ai
End Sub KeyPress
KeyUp LostFocus MouseDown _—_ MouseMove 7“ MouseUp
Trang 18Với cửa sổ soạn thảo mã lệnh, chúng ta có thể xem một
thủ tục hoặc tất cả các thủ tục trong một biểu mẫu bằng các
nút Procedure View hay Full Module View bên dưới cửa sổ
Soạn thảo mã lệnh
IV.4 Sử dụng các điểm đánh dấu (Bookmark)
Khi làm việc với một ứng dụng lớn, thật dễ dàng để mất
đi các vị trí quan trọng cần xem khi chúng ta di chuyển qua lại
giữa các cửa sổ soạn thảo bộ mã lệnh hoặc thủ tục
Để giữ lại các vị trí trong các thủ tục mà chúng ta đã đi
qua nhằm sau này cần quay lại nhanh thì chúng ta cần phải
tạo ra các điểm đánh dấu (bookmark) Để tạo điểm đánh dấu
cho dòng hiện tại chúng ta vao thyc don Edit > Bookmarks >
Toggle Bookmark Một khối hình chữ nhật màu xanh sẽ xuất
hiện phía bên phải dòng lệnh hiện hành Muốn bỏ dấu điểm
đánh dấu này chúng thực hiện lại y như bước trên
[— Tao diém đánh dấu tại một dòng lệnh để di chuyển qua lại
nhanh hơn nh Thu_vien Fran es) l es
Function CloseObject (strContainerName As String) ~Ỉ
‘close open database objects
Dim dbs As Database, ctr 4s Container
Dim intX ds Integer |
Hình IX.10 : Của sổ soạn thảo bộ mã lệnh hiển thị các dòng lệnh
được tạo điểm đánh dấu
Trang 19
Chương 9 : Ngôn ngữ Visual Basic for Applications 15
Để di chuyển nhanh qua lại giữa các điểm đánh dấu đã
tạo chúng ta thực hiện:
_ Edit > Bookmark — Next/Previous Bookmark
_ Khi không muốn sử dụng các điểm đánh dấu nữa thi
chúng ta có thể xóa tất cả các điểm đánh dấu đã tạo trước
đó:
Edit —› Bookmark —› Clear All Bookmarks
TẠO HÀM ĐẦU TIÊN
Nếu chúng ta có thưởng sử dụng một biểu thức tính toán
giống nhau cho nhiều biểu mẫu hay báo cáo Và biểu thức
này tương đối phức tạp thì chúng ta nên xảy dựng một hàm chung để tại một vị trí nào đó mà bất kỳ biểu mẫu hoặc báo
cáo đều có thể sử dụng chung được Khi viết một hâm chung
này có các điểm thuận lợi như sau :
e - Chắc rằng mỗi lần tính toán giá trị của các biểu mẫu
giống nhau hoàn toàn không bị sai lệch
e - Nếu cần thay đổi nào đó thì có thể quay lại sửa tại một
điểm mà thôi
e Khi thực hiện các phép tính phức tạp hoặc các điều kiện ràng buộc phức tạp thì chúng ta có thể sử dụng các cấu trúc điều khiển If, Select Case mot cach
Trang 20V.1 Tạo mới một hàm
Trong cửa sổ cơ sở dữ liệu chọn đối tượng làm việc là bộ
mã lệnh (modules) chọn nút New để tạo mới một bộ mã lệnh
chuẩn (standar module)
e Trong cửa sổ soạn thảo mã lệnh Chọn thực đơn:
Insert — Procedure
° Ghi vào tên của hàm muốn tạo mới, chọn nút OK,
Tên hàm muốn tạo mới
ladd Procedure
Loại hàm hoặc thủ tục
Hình IX.11 : Cửa sổ cho phép ghi tên hàm/thủ tục được tạo mới
e - Thực hiện các phép tính toán trong hàm thông qua các
câu lệnh của Visual Basic for Applications
Trang 21If Forms (intX) FormNeme = strFrmName Then ue
If Forms(ints).CurrentView <> conFormbesign Then ˆ IsLoaded = True
Exit Function - End If
End If Next End Function
hiện ra các sai sót ngoài ý muốn trong khi viết Chúng ta có
thể thực hiện một trong các chức nang sau: Debug > Compile
Microsoft Access sé bién dich tất cả các thủ tục trong tập tin cơ sở dữ liệu của Access Công việc này sẽ mất một vài
phút nếu bên trong tập tin cơ sở dữ liệu của Access có khá
nhiều các bộ mã lệnh Nếu trong quá trình biên dịch xảy ra lỗi
thì hệ thống dừng lại và sẽ thông báo lỗi cho chúng ta biết
dòng lệnh nào chứa lỗi và để chúng ta sửa chữa
Sử dụng các hàm
Nếu chúng ta đã xây dựng xong hoàn chỉnh một hàm thì chúng ta có thể gọi sử dụng nó được tại các vị trí sau:
Trang 22e _ Trong các thủ tục hoặc các hàm khác
e Nhu la một biểu thức tính toán được định nghĩa trong một
truy vấn, một điều khiển trên biểu mẫu hoặc bao cao
e Như là một điều kiện cho truy vấn hoặc tập lệnh
Thí dụ sau đây chúng ta sử dụng hàm IsLoaded để kiểm
tra xem một biểu mẫu có mở ra chưa, với tên biểu mẫu sẽ do
người sử dụng đưa vào thông qua một điều khiển hộp văn bản
trên một biểu mẫu
Nhập tên biểu mẫu muốn kiểm tra
Trước tiên chúng ta phải xây dựng các điều khiển trên
biểu mẫu và đặt tên cho chúng rõ ràng, dễ hiểu Hộp văn bản
để nhập tên biểu mẫu muốn kiểm tra có tên là Txt_Frmname,
nút lệnh để thực hiện việc kiểm tra có tên là Cmd_Check
Trong biến cố Click của nút lệnh Cmd _Check chúng ta sẽ
_ gọi đến hàm IsLoaded, tuy nhiên để sử dụng hàm IsLoaded
thì chúng ta sẽ đưa vào cho hàm này một tham số chính là tên
của biểu mẫu cần kiểm tra Chúng ta sẽ sử dụng tên của điều
Trang 23End Sub
[Ed Hình IX.14 : Cửa sổ soạn thảo bộ mã lệnh hiển thị các câu lệnh dùng
trong thủ tục biến cố Click của nút Cmd_ Check
CÁC NGUYÊN TẮC CƠ BẢN TRONG NGÔN NGỮ VISUAL BASIC FOR APPLICATIONS
Trong một ứng dụng đơn giản, bạn cần sử dụng Visual
Basic for Applications để tạo ra các thủ tục biến cố và các
hàm đơn giản Tuy nhiên nếu các ứng dụng của bạn trở nên
lớn hơn và rắc rối hơn thì khi đó bạn phải biết vận dụng ngôn
ngữ Visual Basic for Applications một cách có hiệu quả Trong
phần này sẽ giúp bạn các qui tắc cơ bản cho việc viết các
doan lénh Visual Basic for Applications trong Microsoft Access
VI.1 Các khái bộ mã lệnh chuẩn (Standard Module) va bo ma
lệnh lớp (Class Module)
Chúng ta lưu trữ các đoạn lệnh Visual Basic for
Applications trong cơ sở dữ liệu Microsoft Access Bộ mã lệnh
cung cấp một cách để tổ chức các thủ tục của chúng ta.
Trang 24
Cơ sở dữ liệu của chúng ta có thể chứa hai loại bộ mã
lệnh :
- Bộ mã lệnh chuẩn: Chúng ta sử dụng bộ mã lệnh chuẩn
để chứa các đoạn lệnh mà bạn có thể muốn chạy tại bất
kỳ vị trí nào trong ứng dụng của bạn Chúng ta có thể gọi
là các thủ tục toàn cuc (public procedure) trong các bộ
mã lệnh chuẩn
Để tạo ra một bộ mã lệnh chuẩn mới, chúng ta có thể
thực hiện
Chọn thực đơn: Insert — Module Hoặc trên cơ sở dữ
liệu chúng ta chọn đối tượng làm việc Modules sau đó nhấn
Function IsLoaded (str¥FrmNane = 1
‘Kiem tra xem mot bieu me
Pater Khi eee ee T
Hình IX.15 : Cửa sổ hiển thị các bộ mã lệnh chuẩn
- Bộ mã lệnh lớp: Chúng ta sử dụng bộ mã lệnh lớp để có
thể tạo các đối tượng mới của riêng mình Các thủ tục và
hàm mà chúng ta định nghĩa trong một bộ mã lệnh lớp sẽ
trở thành các phương thức của đối tượng Các thuộc tính
mà chúng ta định nghĩa bằng các : lénh_ Property Get,
Trang 25Chương 9 : Ngôn ngữ Visual Basic for Applications 21
Property Let, Property Set sẽ trở thành các thuộc tính của
đối tượng
Để tạo mới một bộ mã lệnh lớp, chúng ta có thể thực hiện
Chọn thực đơn: Insert —> Class Module
Mỗi biểu mẫu và báo cáo trong cơ sở đữ liệu của chúng
ta có thể chứa đựng các bộ mã lệnh liên kết với nó Các bộ
mã lệnh này cũng là các bộ mã lệnh lớp, nhưng chúng ta không thể lưu chúng tách rời ra khỏi các báo cáo hoặc các biểu mẫu mà chúng thuộc vào bên trong đó Bộ mã lệnh lớp
có liên quan với một biểu mẫu thì được sử dụng một cách hữu hiệu nhất bởi vì chúng ta có thể sử dụng nó để tạo ra nhiều trường hợp đặc biệt của một biểu mẫu
Thông thường, chúng ta sử dụng bộ mã lệnh của biểu
mẫu hoặc báo cáo để chứa các thủ tục biến cố có liên quan
đến biểu mẫu hoặc báo cáo đó Mỗi bộ mã lệnh cũng có thể
chứa các thủ tục khác mà thuộc vào bên trong biểu mẫu hoặc
báo cáo
Bộ mã lệnh của báo cáo hoặc của biểu mẫu là một phần của báo cáo hoặc biểu mẫu Do đó, khi sao chép biểu mẫu hoặc báo cáo sang một tập tin cơ sở dữ liệu Access khác thì
tự động bộ mã lệnh sẽ đi theo cùng với nó Khi chúng ta xóa
đi một biểu mẫu hoặc báo cáo thì các bộ mã lệnh bên trong
nó cũng hiển nhiên bị xóa theo
TRƯƠNG 98 ung đc thực hiện khi biến cố đó xảy ra, ví dụ như
| | TH MIỄN! ụng nhấn chuột (click) trên nút lệnh Các
| k9 ~ J6A%
Trang 26thủ tục biến cố này sẽ được cất giữ ngay trong biểu mẫu
hoặc báo cáo tương ứng
- _ Thủ tục chung (general procedure) : Là các thủ tục mà
không trực tiếp liên quan đến một đối tượng hoặc một
biến cố nào cả Chúng ta có thể tạo các thủ tục chung
này bên trong một bộ mã lệnh chuẩn hoặc bộ mã lệnh
lớp Các thủ tục chung này có thể là một thủ tục, hoặc
một hàm
VI.3 Thủ tục biến cố
Khi Microsoft Access nhận thấy có một biến cố xảy ra
trên biểu mẫu, báo cáo, hoặc điều khiển, nó sẽ tự động thi
hành các thủ tục biến cố đã tạo cho đối tượng và biến cố đó
Nếu chúng ta muốn thực hiện một số các hành động nào đó
để đáp lại một biến cố đặc biệt nào thì chúng ta phải đưa vào
các đoạn lệnh cần thiết vào trong một thủ tục biến cố
Khi chúng ta tạo một thủ tực biến cố, Microsoft Access sẽ
tự động tạo cho chúng ta khuôn mẫu lệnh cho biến cố và đưa
nó vào trong bộ mã lệnh của biểu mẫu hoặc báo cáo Tên
của một thủ tục biến cố dùng cho biểu mẫu hoặc báo cáo
được kết hợp bằng từ “Form” hoặc “Report, dấu “_” và tên
của biến cố đó Thí dụ như nếu khi đóng một biểu mẫu lại
chúng ta cần xử lý một số hành động nào đó thì các hành
động này sẽ đưa vào trong biến cố đóng biểu mẫu, chúng ta
có thể sử dụng thủ tục biến cố Close của biểu mẫu khi đó tên
thủ tục biến cố Form_Close
Đối với một thủ tục biến cố của điều khiển cũng qui định
như thế Thí dụ, nếu chúng ta có một nút lệnh tên là
Cmd_Close dùng để đóng biểu mẫu lại Khi người dùng nhấn
vào nó thì tự động nó sẽ đóng biểu mẫu lại, chúng ta sẽ sử
dụng thủ tục biến cố Click của nút lệnh này khi đó thủ tục
biến cố có tên Cmd_Close_Click Nếu tên các điều khiển
chứa ký tự không là số hoặc chữ và thậm chí có khoảng trắng
Trang 27kiểm tra đúng, nhưng sau đó nếu vì một lý do nào đó mà
chúng ta quay lại sửa đổi tên của điều khiển thì cẩn thận thủ
tục biến cố đó không còn đúng cho điều khiển nữa Tuy nhiên các lệnh bên trong biến cố vẫn còn được lưu trong bộ mnã lệnh
của biểu mẫu, để cho đúng chúng ta phải di chuyển các đoạn
lệnh vào đúng thủ tục biến cố của tên điều khiển mới thay
khi một biến cố đó xảy ra Ngược lại một thủ tục dùng chung
chỉ được thi hành khi nào chúng ta gọi đến nó Thí dụ hàm là một thủ tục chung
Lý do mà chúng ta tạo ra các thủ tục chung là để tạo ra
các chức năng của riêng mình nhằm tự động tính toán một số công việc thường xuyên cần thực hiện Một lý do khác nữa là
_ chúng ta muốn nhiều thủ tục biến cố khác nhau có thể cùng
dùng chung một hành động Một chiến lược lập trình tốt là đặt
tất cả các đoạn lệnh chung trong một thủ tục chung khi đó các thủ tục biến cố chỉ việc gọi đến nó khi muốn sử dụng
Điều này sẽ tránh được các đoạn lệnh trùng lặp lại và giúp
cho chúng ta — những người lập trình dễ bảo trì hơn
Chúng ta có thể tạo thủ tục chung trong các bộ mã lệnh
của biểu mẫu, báo cáo, hoặc trong bộ mã lệnh chuẩn Nếu chúng ta muốn có thể sử dụng các thủ tực chung tại bất kỳ vị
Trang 28trí nào trong ứng dụng thì chúng ta phải đặt nó tại vị trí bộ mã
lệnh chuẩn Nếu một thủ tục chung chỉ được sử dụng trong
duy nhất một biểu mẫu hoặc báo cáo thì chúng ta nên đặt nó
ngay trong bộ mã lệnh của biểu mẫu hoặc báo cáo
VI.5 Tên mặc định và tầm ảnh hưởng của các loại thủ tục
“Mitta | `” TênthỈiehỏáehm — | Có ảnh hưởng
Biến cố của | Private Sub Form_Tên biến cố() Tại biến cố của biểu
biểu mẫu Các lệnh mẫu
End Sub
Biến cố của | Private Sub Tân diều khiển_Tên biến cố() Tại biến cố của điều
End Sub
Bộ mã lệnh | Sub Tên thủ tục(Các tham số) Phụ thuộc vào kiểu
của ứng Các lệnh của thủ tục hay
dụng hoặc hàm là Public hay
biểu mẫu End Sub Private mà nó có
ảnh hưởng toàn cục hay cục bộ
VỊ.6 Tạo và gọi các thủ tục
Trong phần này sẽ giải thích cú pháp giúp chúng ta tạo ra
các hàm hoặc thủ tục và gọi thực hiện chúng trong ứng dụng
Khái niệm thủ tục trong Microsoft Access có thể là một thủ tục
con (Sub procedure) hoặc một thủ tục hàm (Function
procedure)
s Thủ tục con: thực hiện các hành động nhưng không trả
về một giá trị nào đó và không thể dùng trong các biểu
Trang 29
Chương 9 : Ngôn ngữ Visual Basic for Applications 25
thức Thủ tục con có thể nhận các tham số vào Một thủ
tục biến cố là thủ tục con được gắn vào với các biểu mẫu
hoặc báo cáo
« ˆ Thủ tục hàm: trả về một giá trị, chẳng hạn như kết quả
của một phép tính Vì chúng sẽ trả về các giá trị, do đó
thủ tục hàm có thể sử dụng trong các biểu thức Giống
như thủ tục con, thủ tục hàm cũng có thể nhận tham số vào Thí dụ chúng ta có thể viết một hàm trả về ngày cuối của một tháng khi gởi vào một ngày bất kỳ
« = Cú pháp khai báo thủ tục:
[Public | Private] [Static] Sub Tên Thủ tục ([Tham số]!
<Lệnh thực hiện>
End Sub trong đó:
+ Lệnh thực hiện: dãy các câu lệnh Visual Basic for Applications mà chúng ta muốn thí hành khi thủ tục
hoặc hàm được gọi
+ Tham số: danh sách các tham số gởi vào để có giá trị
cần cho thủ tục dùng tính toán bên trong
e Cú pháp khai báo các tham số trong thủ tục/hàm
[ByVal | ByRef] <tén bién> As kiểu di [= giá trị mặc định]
Từ khóa Dùng mô tả
ByVal Tham số được truyền theo giá trị
ByRef Tham số được truyền theo địa chỉ (Mặc định)
Tên biến Tên biến truyền vào thủ tục
Kiểu dl Kiểu dữ liệu của biến có thể là : Số, chuỗi, ngày
Giá trị mặc định Là một giá trị cụ thể được gán vào tham số trong trường
hợp tham số gởi vào không có giá trị
Trang 30hoặc Call Tên thủ tục ( tham s61, tham s62, .)
Thí đụ: Tạo một thủ tục phát ra nhiều tiếng beep, tham số
nhận vào sẽ là số lần muốn phát ra tiếng beep
Sub MultiBeep (intBeeps as Integer)
Dim intX As Integer, IngY As Long For intX = 1 To intBeeps
Beep For IngY = 1 To 1000 Next IngY
Next IntX End Sub
Để gọi đến thủ tục trên chúng ta sẽ dùng câu lệnh sau:
-MultiBeep 3 hoặc MuitiBeep intBeeps:=3
Khi đó thủ tục MultiBeep sẽ được thực hiện và nhận vào
tham số một giá trị số 3 (3 lần Beep)
Lưu ý: Chúng ta không nên đặt dấu ngoặc đơn vào danh
sách các tham số khi gọi nó
© Cú pháp khai báo ham
[Public | Private] [Static] Function Tén Ham ([Tham số]) As
+ Giá trị trả về: giá trị dữ liệu mà hàm sẽ trả về sau khi đã
tính toán bên trong :
Thi du:
Viết hàm tính cạnh huyền của một tam giác vuông khi
biết được hai cạnh còn lại
Trang 31
Chương 9 : Ngôn ngữ Visual Basic for Applications 27
Function Canh Huyen (dblA As Double, dbiB As Double) As Double
+ Canh huyen c = căn bậc 2 (a^2 + b^2)
Canh_Huyen = Sqr(dbiA^2 + dbiB^2) End Function
Để sử dụng đến hàm trên, chúng ta sẽ dùng câu lệnh sau:
« Khi gọi đến một hàm thì phải có một giá trị chứa đựng giá trị dữ liệu trả về của hàm
VI.7 Sử dụng danh sách tham số biến đổi
Thông thường thì khi sử dụng tham số cho thủ tục thì
chúng ta phải bắt buộc đưa vào đầy đủ tham số đã khai báo nếu thiếu thì hệ thống sẽ thông báo lỗi và không thực hiện Thí dụ, khi gọi đến hàm tính cạnh huyền thì chúng ta sẽ đưa
vào hai tham số là giá trị của hai cạnh Tuy nhiên đối với Visual Basic for Applications cung cấp cho chúng ta hai cách
để có thể sử dụng danh sách tham số thay đổi
- Tham số có thể bỏ qua (Optional Argument)
Chúng ta sử dụng từ khóa Optional khai báo phía
trước mỗi tham số nào nếu chúng ta muốn cho tham số
đó có thể bỏ qua Khi đó, nếu gọi đến thủ tục mà chúng
Trang 32ta không đưa vào tham số thì Microsoft Access Sẽ tự động
lấy một giá trị mặc định cho tham số đó Thí dụ nếu tham
số là kiểu dữ liệu số thì giá trị mặc định sẽ là không, khi
là chuỗi thì sẽ là chuỗi rỗng tuy nhiên chúng ta vẫn có
thể thay đổi giá trị mặc định này được
Thí dụ: Thủ tục nhận vào mã số lỗi và chuỗi lỗi và
sau đó thể hiện bằng lệnh MsgBox, tuy nhiên với tham số
mã lỗi có thể bỏ trống khi gọi Giá trị mặc nhiên khi bỏ
trống của tham số mã lỗi là 100
Sub DisplayError (strText As String, Optional intNum As integer
= 100)
if intNum =100 Then
Msgbox strText Else
Msgbox intNum & “2? & strText
End If
End Sub
Khi đó chúng ta có thể gọi thủ tục theo hai cách sau đây :
DisplayError “invalid Entry” hodc
DisplayError “Invalid Entry”, 190
- $6 lugng tham số tùy ý
Để sử dụng số lượng tham số tùy ý có kiểu là Variant
(kiểu biến) chúng ta phải sử dụng từ khóa ParamArray Mục
đích khi sử dụng cách này là chúng ta chưa xác định được sẽ
gởi vào bao nhiêu tham số cho thủ tục khi gọi đến nó Bên
trong thủ tục, chúng ta có thể sử dụng hàm IsMissing để có
thể xác định giá trị của một tham số có được truyền vào trong
thủ tục Hàm này sẽ trả về True khi tham số không được
Trang 33
Chương 9 : Ngôn ngữ Visual Basic for Applications 29
truyền vào trong thủ tục, hàm này chỉ sử dựng cho các tham
số có kiểu Variant
Thí dụ : Viết một thủ tục hàm tính tổng của một danh
sách các con số gởi vào mà không thể xác định trước sẽ là bao nhiêu số
Function Total_Nums{ParamArray varNums As Variant) As Double
Dim dbfTotal As Double, var As Variant
For Each var in varNums dbiTotal = dbiTotal + var Next var
Total_Nums = dbiTotal
End Function
Khi đó chúng ta có thể gọi thủ tục hàm như sau :
dbiSum = Total_Nums (5, 6, 7) dbiSum = Total_Nums (5, 6, 7, 8, 9)
VI.8 Sử dụng biến
Trong quá trình xử lý tính toán bên trong Visual Basic for Applications, chương trình cần phải sử dụng một số các biến
trung gian để lưu trữ các giá trị tính toán Các giá trị dữ liệu
mà biến lưu trữ cũng giống như các giá trị dữ liệu mà các
bảng lưu trữ tuy nhiên giá trị của các biến này sẽ bị mất đi khi
ứng dụng của chúng ta chấm dứt hoạt động Microsoft Access -
cho phép chúng ta hai cơ chế khi sử dụng biến: khai báo biến
và không khai báo biến trước khi sử dụng Thông thường để cho chương trình tường minh, chúng ta nên khai báo các biến
trước khi sử dụng bằng từ khóa Dim.
Trang 34VI.9 Qui ước cách đặt tên các thành phần trong Visual Basic
for Applications
Trong quá trình viết các đoạn lệnh trong ngôn ngữ Visual
Basic for Applications chúng ta sẽ khai báo, đặt tên cho các
- Độ đài tối đa là 255 ký tự
- Không chứa các từ khóa của ngôn ngữ Visual Basic for
Applications (If, Do )
VI.10 Sử dụng đối tượng Docmd (Do Command)
Trong khi sử dụng ngôn ngữ Visual Basic for Applications
chúng ta có thể thực hiện các hành động tương ứng trong
công cụ tập lệnh bằng cách sử dụng các phương thức của đối
Thí dụ: để có thể đóng biểu mẫu Sinh viên chúng ta sẽ
chọn phương thức Close của đối tượng Docmd
Docmd.Close acForm, “Sinh vien”
Trang 35
Chương 9 : Ngôn ngữ Visual Basic for Applications 31
Khi đó acForm là hằng số chỉ định loại đối tượng là biểu mẫu muốn đóng và chuỗi “Sinh vien” là tên của biểu mẫu sinh
viên Dấu phẩy “,” để ngăn cách các tham số trong trường hợp phương thức có nhiều tham số
Chúng ta có thể sử dụng hầu hết các phương thức của
đối tượng Docmd để thực hiện các hành động bên trong tập
lệnh Tuy nhiên có bảy (7) hành động bên dưới mà đối tượng Docmd không thể thực hiện được Nhưng Visual Basic for
Applications cũng cung cấp các hàm hoặc thủ tục tương
RunApp Ham Shell’
RunCode Lệnh gọi đến một hàm
SendKeys Lệnh SendKeys
SetValue Lệnh gán giá trị trực tiếp
StopAllMacros Stop hoặc End
StopMacro Exit Sub hoặc Exit Function
VII CÁC CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH
Các cấu trúc điều khiển là các cấu trúc mà cho phép người lập trình có thể điều khiển thứ tự vận hành của các câu
lệnh bên trong chương trình khi chúng được thực hiện Bình
thường nếu không sử dụng các cấu trúc điều khiển thì chương
trình sẽ được thi hành tử trên xuống dưới theo thứ tự tuần tự
mà chúng ta đã viết Visual Basic for Appiications cũng là
ngôn ngữ lập trình giống như các ngôn ngữ khác nó cung cấp cho chúng ta các cấu trúc điều khiển sau:
Trang 36VII.1 Cấu trúc Nếu thì
Cấu trúc này cho phép chúng ta kiểm tra một điều kiện
đúng hay sai khi đó sẽ thực hiện các hành động tương ứng
Đối với cấu trúc If có các phát biểu như sau:
e = H <đều kiện> Then <lệnh>
Ý nghĩa: Nếu điều kiện đúng thì một lệnh sẽ được thực
Thông thường các điều kiện là các biểu thức so sánh
chứa các toán tử so sánh >, <, =, >=, <= va cdc giá trị
cần so sánh, khi đó nó sẽ trả về một giá trị logic là đúng
hoặc sai Visual Basic for Applications cũng có thể hiểu
được giá trị 0 là sai và khác không là đúng
Ý nghĩa: Nếu điều kiện đúng thì các lệnh thứ nhất sẽ
thực hiện, còn ngược lại nếu điều kiện sai thì các lệnh thứ
hai sẽ thực hiện
Trang 37kiện thứ nhất sai và điều kiện thứ hai đúng thì sẽ thực
hiện các lệnh thứ hai cho đến khi nếu tất cả các điều kiện đưa ra đều sai hết thì các lệnh thứ n sẽ được thực
hiện
Hoặc
© IWfType0f <tên biến> ls kiểu dữ liệu Then
<các lệnh> : End If
Ý nghĩa : Nếu loại đữ liệu của một biến là kiểu gì thì các
lệnh sẽ được thực hiện
Các thí dụ:
Hai thí dụ sau đây là tương đương nhau Hàm Now trả về
ngày hiện hành của hệ thống Trong thí dụ này kiểm tra giá trị
của biến anyDate có nhỏ hơn ngày hiện hành không, nếu
đúng thì thay đổi giá trị của biến đó là ngày hiện hành
If anyDate < Now Then anyDate = Now
Trang 38Hoặc
W anyDate < Now Then
anyDate = Now
-End If
Khi thực hiện từ hai lệnh trở lên thì chúng ta phải bắt
buộc sử dụng cú pháp !f End If Như thí dụ trên nhưng nếu
có thêm lệnh in ra cửa sổ bẫy lỗi
W anyDate < Now Then
anyDate = Now
Debug.Print anyDate ‘in giá trị anyDate ra cửa sổ Debug
End ff :
Thí dụ kiểm tra một số intNum là chắn hoặc lẻ
if (intNum Mod 2) = 0 Then
Msgbox “Số không”
End If
End If
Trang 39Chương 9 : Ngôn ngữ Visual Basic for Applications 35
VII.2 Cấu trúc chọn lựa
Chúng ta hiểu rằng cấu trúc chọn lựa này cũng giống như cấu trúc If Elself, nghĩa là khí đó sẽ có nhiều trường hợp hon cau tric If
e Select Case biểu thức
Case gid tri 1
Thí dụ: Xét một số nguyên nằm trong miền giá trị nào
Select Case intNum Case 1 To 5 * số nằm trong miền giá trị [1 5]
MsgBox “Between 1 and 5"
Case6,7,8 — “là các số 6,7, 8
MsgBox "Between 6 and 8"
Case Is > 8 * số lớn hơn 8
MsgBox "Greater than 8"
Case Else *“ số nhỏ hơn 0
MsgBox "Less than 0"
End Select
VII.3 Cấu trúc lặp
Khi một công việc được làm đi làm lại nhiều lần thì khi đó
chúng ta gọi đó là khái niệm lặp, tuy nhiên số lần lặp thực
Trang 40hiện này có thể xác định trước được hay là không Visual
Basic for Applications chia vòng lặp ra làm hai loại:
- Điều kiện lặp: là một biểu thức so sánh đúng hoặc
sai để cho vòng lặp tiếp tục thực hiện hay ngưng
- _ Các lệnh: Các lệnh bên trong sẽ được lặp
- Exit Do: Thoat khỏi vòng mà không phải kiểm tra
điều kiện lặp khi đó là đúng hoặc sai
Diễn giải rõ hơn:
- Đo While <điều kiện lặp> hoặc While <điều kiện
lặp> hoặc Loop While <điều kiện lặp> : Y nghia la
trong khi mà điều kiện lặp vẫn còn đúng thì các