Tài liệu tham khảo công nghệ thông tin Xử lý tự động công nghệ thông tin trong văn phòng
Trang 1Giáo trình này được thiết lập tự động cập nhật tất cảcác liên kết và mã lập trình đều ở dạng dữ liệu Việt Pháp,
nên phải chỉnh dữ liệu và máy tính về dạng Việt Pháptrước khi đọc tiếp giáo trình này, nhấn phím Ctrl và nháyvào đây để đọc cách chỉnh thuộc trang 7
Không thực hiện sửa chữa đè lên phần nội dung
bôi đen chọn toàn bộ văn bản, nhấn phím F9 đểcập nhật Không cắt hình và tiêu đề hình chuyển vịtrí mà chỉ chuyển phần chữ, do các hình đều đặtBookMark liên kết, nếu không đặt lại đúng sẽ bịlỗi hàng loạt.
Trang 2XỬ LÝ TỰ ĐỘNG CÔNG NGHỆ THÔNG TINTRONG VĂN PHÒNG
HÀ NỘI - 2010
Trang 4XỬ LÝ TỰ ĐỘNG CÔNG NGHỆ THÔNG TINTRONG VĂN PHÒNG
(Giáo trình dùng cho mọi đối tượng sử dụng máy vi tính của Học viện Phòng không - Không quân)
HÀ NỘI - 2010
Trang 5Tác giả
Chủ biên: KS Nguyễn Anh Cường
Trưởng ban CNTT- Học viện Phòng không -Không quânTrưởng Kỹ thuật Trung tâm Tin học ABC
Người sửa chữa, hiệu đính:Nguyễn Phương Thảo
Giám đốc Trung tâm Tin học ABC
Cửa hàng trưởng 148 Vương Thừa Vũ - Hà NộiTrang phục May sẵn Rẻ nhất Hà Nội
fthaoabc@yahoo.com0912.678.515
Trang 6CHỮ VIẾT TẮT 5
LỜI NÓI ĐẦU 6
Chương 1: Hệ thống và cài đặt 7
1.1 Một số nội dung liên quan đến hệ thống 7
1.1.1 Điều chỉnh dữ liệu về dạng Việt Pháp 7
1.1.2 Biểu diễn dữ liệu ngày tháng trên trục thời gian 10
1.2 Cài đặt Microsoft Office 11
1.2.1 Nguyên tắc khi cài đặt Microsoft Office 11
1.2.2 Thực hiện cài đặt đầy đủ Microsoft Office 12
1.2.3 Thực hiện cài bổ sung 14
1.2.4 Chú ý khi sử dụng chương trình diệt Virus BKAV sau khi cài 15
Kết luận chương 1 16
Câu hỏi và bài tập chương 1 16
Chương 2: Ngôn ngữ Visual Basic cho ứng dụng 17
2.1 Tổng quan về Visual Basic For Application 17
2.1.1 Khái niệm 17
2.1.2 Sử dụng Visual Basic For Application 17
2.1.3 Đặc điểm của Visual Basic For Application 18
2.1.4 Trình tự xây dựng một dự án bằng Visual Basic For Application 18
2.1.5 Cấu trúc của một dự án Visual Basic For Application 19
2.1.6 Môi trường phát triển tích hợp 20
2.2 Cơ bản về ngôn ngữ lập trình Visual Basic 21
2.2.1 Những qui định về cú pháp 21
2.2.2 Các trợ giúp về cú pháp trong quá trình viết mã lệnh 22
2.2.3 Từ khoá trong VBA 24
2.2.4 Các kiểu dữ liệu cơ bản 25
2.2.5 Khai báo trong Visual Basic For Application 30
2.2.12 Khởi tạo các biến từ file *.ini 64
2.3 Khả năng mở rộng của các phần mềm trong bộ Microsoft Ofice 65
2.3.1 Macro 65
2.3.2 Hiệu chỉnh macro 73
2.3.3 Vấn đề an toàn khi sử dụng macro 73
2.4 Tùy biến nút lệnh và tổ hợp phím tắt trong các phần mềm Office 74
Trang 72.4.1 Tùy biến đối với nút lệnh 74
2.4.2 Thiết lập phím tắt 78
2.4.3 Chèn các lời chú 79
Kết luận chương 2 80
Câu hỏi và bài tập chương 2 80
Chương 3: Các tệp lưu giữ tuỳ biến 81
3.1 Normal.dot trong WinWord 81
3.1.1 Công dụng, vị trí của Normal.dot 81
3.1.2 Một số chức năng tiêu biểu trong Normal.dot 82
3.1.3 Các tệp khởi động tương tự normal.dot 104
3.2 Personal.xls và các tệp hỗ trợ tuỳ biến trong Excel 105
3.2.1 Công dụng, vị trí 105
3.2.2 Add-in 106
Kết luận chương 3 107
Câu hỏi và bài tập chương 3 107
Chương 4: Các xử lý chuyên biệt trong WinWord 108
Câu hỏi và bài tập chương 4 151
Chương 5: Xử lý hỗn hợp trong WinWord 152
5.1 Xử lý tự động về nội dung ngay lúc gõ 152
Câu hỏi và bài tập chương 5 199
Chương 6: CÁC TRƯỜNG TRONG WORD 200
6.1 Căn bản về các trường của Microsoft Word 200
Trang 86.1.1 Chèn một trường của Word vào văn bản 200
6.1.2 Khoá chuyển 201
6.2 Những nguyên tắc cơ bản khi làm việc với trường Word 202
6.2.1 Lấy giá trị nhập vào từ người dùng 202
6.2.2 Đặt giá trị cho BookMark không thông qua người dùng 203
6.2.3 Chèn BookMark và kết quả tính toán ra văn bản 204
6.3 Tính toán các trường Word 209
6.3.1 Cú pháp về gõ công thức trong trường formular 209
6.3.2 Các toán tử số 209
6.3.3 Các toán tử so sánh 210
6.3.4 Các hàm 210
6.3.5 Tính toán trong các FormText 214
6.3.6 Tham chiếu vào các ô trong bảng 216
6.3.7 Kiểm tra hoặc trả về nội dung ô trong bảng 219
6.3.8 Tham chiếu nội dung của ô trong bảng từ ngoài bảng 219
6.3.9 Tham chiếu tính tổng hàng và tổng cột từ ngoài bảng 220
6.4 Làm việc với ngày tháng 221
6.4.1 Các loại ngày tháng 221
6.4.2 Định dạng ngày tháng 221
6.4.3 Tự động chèn một ngày quá khứ và tương lai 224
6.4.4 Tính toán qua lại giữa ngày trước và ngày sau 230
6.5 Làm việc với thời gian 235
6.5.1 Tính tổng của 2 giá trị thời gian 236
6.5.2 Tính hiệu của 2 giá trị thời gian 236
6.5.3 Chỉ định thời gian quá khứ hoặc tương lai 237
6.6 Điều khiển vị trí các ký tự thông qua hàm Advanced 239
6.6.1 Công dụng hàm Advanced 239
6.6.2 Cú pháp 240
6.7 Nối kết dữ liệu 240
6.7.1 Kỹ thuật nối kết Object Linking and Embedding 240
6.7.2 Kỹ thuật nối kết Dynamic Linking and Embedding 243
Kết luận chương 6 247
Câu hỏi và bài tập chương 6 248
Chương 7: Các thao tác trong môi trường Excel 249
7.1 Một số nội dung cần thống nhất trước khi làm việc với Excel 249
7.1.1 Tên và công dụng sơ lược của những yếu tố cơ bản trong Excel 249
Trang 97.2.4 Nhập công thức 259
7.2.5 Phần sơ cấp và phần thứ cấp của một ô 259
7.2.6 Định dạng theo điều kiện 263
7.3 Kiểm soát nhập dữ liệu 266
7.3.1 Yêu cầu nhập dữ liệu 266
7.3.2 Quy cách dữ liệu 267
7.3.3 Chỉ cho nhập dữ liệu vào những ô định trước 269
7.3.4 Không cho người dùng thực hiện một số công việc đối với bảng tính 270
7.3.5 Hiện và ẩn trong Excel 274
Kết luận chương 7 276
Câu hỏi và bài tập chương 7 276
Chương 8: Thiết lập các công thức cho các ô bị động 277
8.1 Điều khiển kiết xuất dữ liệu bị động Excel 277
8.1.1 Sự phụ thuộc giá trị của thứ cấp bị động 277
8.5 Thứ cấp bị động phụ thuộc vào nhiều ô 296
8.5.1 Các ô không liên quan đến nhau 296
8.5.2 Các ô có liên quan với nhau 296
8.6 Xử lý phân nhánh lớn 297
8.6.1 Đặt vấn đề 297
8.6.2 Sử dụng hàm phân nhánh lớn 297
Kết luận chương 8 299
Câu hỏi và bài tập chương 8 299
TÀI LIỆU THAM KHẢO 300
Trang 10DDE Dynamic Linking and EmbeddingIDE Integrated Development EnviromentOLE Object Linking and Embedding
Trang 11LỜI NÓI ĐẦU
Nhu cầu ứng dụng công nghệ thông tin trong học tập, nghiên cứu và giảng dạycủa Học viện luôn rất lớn Việc sử dụng CNTT trong công tác văn phòng là việc làmthường xuyên, nhưng cách thức làm việc để đáp ứng yêu cầu nhanh chóng, hiệu quả,chính xác còn rất bất cập và nhiều hạn chế, cần được định hướng, đi sâu, nghiên cứu đểkhai thác hiệu quả, đặc biệt là lĩnh vực xử lý tự động Để đáp ứng kịp thời nhu cầu đó, giáo
trình “Xử lý tự động công nghệ thông tin trong văn phòng” được biên soạn để phục vụ
nhiệm vụ đào tạo đội ngũ nhân lực công nghệ thông tin, đồng thời làm tài liệu tham khảocho mọi đối tượng giúp cho việc nắm rõ bản chất của vấn đề cần xử lý, tạo tiền đề xâydựng và phát triển ứng dụng CNTT trong công tác văn phòng.
Tài liệu “Xử lý tự động công nghệ thông tin trong văn phòng” được biên soạn
dựa trên cơ sở tổng hợp, thống nhất nội dung của những tài liệu dịch nguyên bản từ tiếngAnh, các tài liệu và những bài viết về bộ phần mềm Microsoft Office hiện có trên Internetvà những tài liệu đã xuất bản Nội dung chủ yếu tập trung đi sâu vào những vấn đề liênquan đến xử lý tự động văn phòng Microsoft Word, Microsoft Excel và kết nối, liên kếtdữ liệu, ở version 2003, 2007 về sau đã và đang sử dụng trong Học viện, phù hợp với yêucầu nội dung, chương trình đào tạo nhân lực công nghệ thông tin.
Bố cục của tài liệu gồm 8 chương:- Chương 1: Hệ thống và cài đặt;
- Chương 2: Ngôn ngữ Visual Basic cho ứng dụng;- Chương 3: Các tệp lưu giữ tuỳ biến;
- Chương 4: Các xử lý chuyên biệt trong Word;- Chương 5: Xử lý hỗn hợp trong Word;- Chương 6: Các trường trong Word;
- Chương 7: Các thao tác trong môi trường Excel;
- Chương 8: Thiết lập các công thức cho các ô bị động Excel.
Tài liệu dùng cho các lớp đào tạo nhân lực công nghệ thông tin với những họcviên đã sử dụng công nghệ thông tin trong công tác văn phòng; phục vụ cho dự án củaHọc viện, đồng thời cũng thích hợp cho các giáo viên, các lập trình viên, học viên làm luậnán tốt nghiệp và cán bộ đang thực hiện làm những chuyên đề, giáo trình, tài liệu.
Tài liệu được biên soạn lần đầu tiên, chắc chắn sẽ không tránh khỏi những sai sót, rấtmong nhận được sự đóng góp ý kiến của bạn đọc để lần tái bản sau được hoàn chỉnh hơn.
Xin trân trọng cảm ơn!
Tác giả
Trang 12Chương 1:
Hệ thống và cài đặt
Chương này trình bày cách chỉnh hệ thống theo chuẩn Việt Nam và thực hiệncài đặt để các nội dung xử lý và ví dụ của những chương sau trong tài liệu này đượcthực hiện đúng Việc xác định và thiết lập các dữ liệu Việt Pháp giúp cho xử lý nhữngvấn đề liên quan đến dữ liệu thông dụng không mắc lỗi Việc cài đặt đầy đủ cho phéptận dụng được mọi khả năng của Microsoft Office đồng thời nắm rõ phần mềm BáchKhoa AntiVirus để tránh không làm hỏng các macro.
1.1 Một số nội dung liên quan đến hệ thống
1.1.1 Điều chỉnh dữ liệu về dạng Việt Pháp
a) Công dụng
Dùng để thống nhất dữ liệu trong tài liệu đúng với quy định Việt Nam Nếukhông điều chỉnh, dữ liệu sẽ được xử lý không đúng, (các ví dụ trong tài liệu này cũngkhông loại trừ) chính vì vậy phải là công việc cần kiểm tra đầu tiên khi sử dụng máy tính.
b) Một số quy định về dữ liệu dạng Việt Pháp
- Về số:
+ Sử dụng dấu chấm để ngăn cách các nhóm 3 số, mô tả giá trị ngàn, triệu, tỉ + Sử dụng dấu phảy để ngăn cách đối với giá trị phần nguyên và phần thập phân.+ Sử dụng dấu trừ (-) làm ký hiệu số âm và được đặt ở trước phần giá trị của số.- Về tiền tệ:
+ Quy định theo cách viết về số.
+ Ký hiệu chỉ đơn vị tiền tệ đứng sau phần chữ số.- Về thời gian:
+ Quy định viết theo thể thức ngày/tháng/năm.
B0 Vào Control Panel (Start/Control Panel)
B1 Vào Regional And Language Options, hộp thoại hiện ra (hình 1.1 trang8) chọn nút Customize Điều chỉnh lần lượt 4 thẻ gồm Number, Current, Time, Date,
thẻ nào trước cũng được, theo quy định định dạng Việt Pháp theo các hình vẽ (từ hình
1.2 đến hình 1.5) sau đó chọn Apply và OK.
Chú ý: - Khi làm việc với các phần mềm, sử dụng định dạng Việt Pháp.
- Khi làm việc, lập trình bằng VBA, sử dụng cách viết và định dạng Anh Mỹ.- Khi nhập dữ liệu số, không nhập định dạng, để Office tự định dạng giúp.
Trang 13Hình 1.1 Hộp thoại Regional And Language Options
Hình 1.2 Điều chỉnh hiển thị số ở Tab Numbers về dạng Việt Pháp
Điều chỉnh để đưa dữ liệu về dạng
Việt Pháp
Trang 14Hình 1.3 Điều chỉnh hiển thị tiền tệ ở Tab Currency về dạng Việt Pháp
Hình 1.4 Điều chỉnh hiển thị thời gian ở Tab Time về dạng Việt Pháp
Trang 15Hình 1.5 Điều chỉnh hiển thị ngày tháng ở Tab Date về dạng Việt Pháp
1.1.2 Biểu diễn dữ liệu ngày tháng trên trục thời gian
a) Bản chất dữ liệu thời gian
Khoảng thời gian ngầm định
Số ngày
Hình 1.6 Sơ đồ mô tả vị trí từng thời điểm trên trục thời gian
- Theo ngầm định, máy tính quy định trục thời gian bắt đầu từ năm 1900 và kếtthúc ở năm 2078 Khoảng thời gian này có thể được điều chỉnh phù hợp với thực tế vàkhả năng tính toán tự động của mỗi dạng bài toán Về việc nhập dữ liệu năm khi nhập2 con số, máy tính sẽ tự hiểu và tự động điền bổ sung hai con số để hoàn thành giá trịnăm Khi nhập năm 99 thì máy tính tự hiểu là năm 1999 Nhập năm 11, máy tính tựđiền là năm 2011 Tuy nhiên khi nhập năm 30 có thể máy tính này điền là năm 1930,máy tính khác điền là năm 2030 Trên hình 1.5 trang 10 phần Calendar có thể điềuchỉnh được khoảng thời gian quy định này để máy tính tự nhập đúng với ý định Mỗimột thời điểm (ngày) là 1 điểm trên trục thời gian.
- Theo quy định thì những ngày đứng sau (ngày d2) được coi là lớn hơn ngày
Trang 16đứng trước (ngày d1) Nên khi lấy ngày d2 trừ ngày d1 sẽ được số ngày Tương tự lầyngày d1 cộng với số ngày sẽ được ngày d2.
- Những quy định liên quan đến ngày, tháng, thời gian là một trong những dữliệu quan trọng trong xử lý tự động liên quan đến những công việc văn phòng.
b) Những điều suy ra từ trục thời gian
Mỗi năm có 365,25 ngày (Vì thông thường, 4 năm sẽ thêm 1 ngày thành nămnhuận nên có thêm chỉ số,25) nên muốn tính số năm (ny) từ số ngày (nd) thì có thể sửdụng công thức:
Trong đó d2 là ngày sau, d1 là ngày trước.
Ngoài ra có thể nhận được số dư của phép chia thông qua hàm MOD (trongExcel) hoặc phép tính MOD trong VBA.
Trong Excel sẽ viết theo hàm:
1.2 Cài đặt Microsoft Office
1.2.1 Nguyên tắc khi cài đặt Microsoft Office
Để làm việc với xử lý tự động, Microsoft Office phải luôn được cài đặt đầy đủ,không bỏ chức năng nào và phải chạy tất cả từ máy tính Việc cài đặt ngầm định sẽkhông đáp ứng được, vì các lựa chọn sẽ thiếu, nên không phục vụ được cho xử lý tựđộng được.
Khi có các lỗi xảy ra, như hiện các thông báo “Compile error in HiddenModule” phải thực hiện tiến hành:
- Cài đặt bổ sung cho Office tất cả các chức năng.- Bổ sung thư viện hàm và thủ tục cho VBA.
- Không sử dụng chức năng xoá macro của chương trình diệt virus BKAV(nếu sử dụng phần mềm diệt virus này).
Trang 171.2.2 Thực hiện cài đặt đầy đủ Microsoft Office
Chạy cài đặt giống như đối với bất cứ một phần mềm cài đặt nào, cho đến khichọn cài đặt, phải chọn Custom và Run All From My Computer.
VD 1: Cài Microsoft Office 2003, chạy tệp SETUP.EXE trong thư mục nguồncài đặt Có thể điền sẵn các thông tin vào vùng [Options] của tệp SETUP.INI thì khicài, Office sẽ tự động điền các thông tin cần thiết, chỉ việc chọn Next.
(Thường đặt dòng mã cài PIDKEY=GWH28DGCMPP6RC46J4MT3HFDY)
Hình 1.7 Hộp thoại nhập mã cài đặt Office 2003
Hình 1.8 Hộp thoại nhập thông tin người dùng
Hình 1.9 Phải chọn Custom để cài đặt đầy đủ
Trang 18Hình 1.10 Phải chọn Advanced Customization of Application
Hình 1.11 Chọn Microsoft Office rồi chọn Run all from My Computer
Hình 1.12 Hộp thoại xác nhận, đồng ý chọn Install
Microsoft Office sẽ thực hiện cài đặt, copy vào máy, ghi các lựa chọn vào
registry các thiết lập ban đầu, chờ cho đến khi hiện hộp thoại có nút Finish, quá trình
cài đặt mới hoàn thành.
Trang 19Hình 1.13 Hộp thoại báo cài xong
Trường hợp không cài đặt Full sẽ gặp thông báo ngay khi vào một phần mềmbất kỳ của Microsoft Office, ví dụ trường hợp WinWord:
Hình 1.14 Báo lỗi module ẩn, do không cài đặt đầy đủ Microsoft Office, (tấtcả có bao nhiêu module trong normal.dot sẽ hiện từng đấy thông báo này)
Phải tiến hành cài đặt đầy đủ để bổ sung phần còn thiếu.
1.2.3 Thực hiện cài bổ sung
Bằng cách chạy lại tệp cài đặt bộ OFFICE (setup.exe), đến khi hiện hộp thoạithì chọn như hình vẽ:
Hình 1.15 Chọn “Add or Remove Features” để cài bổ sung Office
Các bước còn lại của cài bổ sung sẽ hiển thị lại từ hộp thoại hình 1.11 trang 13.
Nếu cài đặt bổ sung Full như trên, nhưng vẫn báo lỗi “Compile error inHidden Module” là do những thư viện bổ sung vào còn chưa cập nhật, do lần cài đặt
Trang 20trước chưa đầy đủ, thực hiện cập nhật các thư viện này bằng tay trong MicrosoftOffice (Ví dụ WinWord) như sau:
B1 Vào VBA bằng Alt + F11.
B2 Chọn Tools/References đánh dấu các thư viện cần sử dụng tối thiểu
phải chọn các thư viện như hình 1.16 trang 15.
Hình 1.16 Bổ sung các thư viện tối thiểu sẽ sử dụng
1.2.4 Chú ý khi sử dụng chương trình diệt Virus BKAV sau khi cài
Hình 1.17 Nếu không cản thận, BKAV là chương trình phá hỏng mọi
Trang 21chức năng xử lý tự động, khi chọn “Xoá tất cả Macro”
Trong quá trình xử lý tự động, làm việc chủ yếu với các macro Các macro nàyvới bất cứ phần mềm diệt virus nào cũng không có vấn đề gì, ngoại trừ phần mềm diệtvirus Bách khoa AntiVirus (BKAV) sẽ xoá mất macro nếu đánh dấu mục “Xoá tất cảcác macro” BKAV là chương trình diệt virus duy nhất cho tới thời điểm này, khôngphân biệt được virus với macro Cho nên để tránh những sai lầm đáng tiếc, giáo trìnhkhuyến cáo không nên sử dụng chương trình diệt Virus BKAV.EXE khi máy tính códùng các chức năng xử lý tự động.
Kết luận chương 1
Chương này mặc dù chỉ nêu vấn đề liên quan đến điều chỉnh, cài đặt đầy đủ vàbổ sung Microsoft Office nhưng có vai trò rất to lớn, làm nền móng cho mọi vấn đề xửlý tự động đề cập ở những chương sau Cần nắm chắc những nội dung của chươngnày để tránh những lỗi đáng tiếc.
Trên thực tế có rất nhiều dạng toán liên quan đến thời gian nên phải nắm chắcquy định của máy tính về thời gian để đưa ra những thuật toán, phương pháp xử lý đốivới thời gian hợp lý Những nhầm lẫn về nội dung này sẽ ảnh hưởng rất lớn đối vớicác nội dung cần đưa ra, thậm chí có nhiều kết quả trái ngược với yêu cầu xử lý.
Câu hỏi và bài tập chương 1
0 Định dạng dữ liệu kiểu Việt Pháp và Anh Mỹ có đặc điểm gì giống nhau,trái ngược nhau?
1 Khi nhập giá trị 1000 vào 1 ô trong Excel có 3 cách nhập, chọn cách đúngnhất, giải thích tại sao?
Trang 22Chương 2:
Ngôn ngữ Visual Basic cho ứng dụng
Để làm việc hiệu quả đối với công tác văn phòng thông qua các phần mềmngoài việc đòi hỏi sử dụng thành thạo còn phải am hiểu và nắm rõ bản chất của vấn đềđang thực hiện Trong tất cả các phần mềm nói chung và bộ phần mềm MicrosoftOffice nói riêng, đều cho phép người dùng có một khả năng tùy biến để thiết lập, cảitiến, bổ sung, điều chỉnh những chức năng của phần mềm Việc thay đổi này giúp choviệc khai thác sử dụng được linh hoạt mang lại những kết quả ấn tượng và nhanhchóng Chương này giới thiệu những kiến thức cơ bản về Visual Basic ForApplication làm nền tảng để lập trình bổ sung các chức năng mới cho Office.
2.1 Tổng quan về Visual Basic For Application
2.1.1 Khái niệm
Một số phần mềm đã cho phép người dùng có thể cần thiệp sâu vào bên trongnó bằng các công cụ lập trình, để có thể tự giải quyết các bài toán phát sinh mà ngườithiết kế phần mềm không thể dự kiến trước được Khi người dùng xây dựng nhữngchương trình dựa trên những ứng dụng được thiết kế theo cấu trúc mở này, họ sẽ tậndụng những khả năng sẵn có của chúng để làm nền, giúp cho việc lập trình đượcnhanh và hiệu quả hơn rất nhiều so với cách lập trình thông thường, nên có thể gọichúng là các ứng dụng nền, điển hình và được sử dụng nhiều nhất làm ứng dụng nềntrong tin học văn phòng là Word và Excel, ngoài việc phù hợp với định dạng tài liệutrong văn phòng (văn bản và bảng tính) chúng còn cho phép người dùng xây dựng cácchương trình chạy cùng với mục đích bổ sung thêm các chức năng chuyên biệt.
Một phần mềm được gọi là ứng dụng nền khi thỏa mãn đồng thời các tiêu chí:- Cho phép một chương trình chạy bên trong và cùng với nó (tương tự như một lệnh).- Cho phép sử dụng các tính năng của nó thông qua công cụ lập trình thíchhợp.
- Một lệnh mới hay một chức năng mới được xây dựng trên ứng dụng nền thựcchất là một chương trình hoàn chỉnh, vì vậy, để xây dựng nó cần có công cụ lập trìnhtương ứng Thông thường công cụ lập trình được hiểu như là một tập hợp bao gồm:
+ Ngôn ngữ lập trình.+ Môi trường lập trình.+ Thư viện hỗ trợ lập trình.
Trong Microsoft Office hỗ trợ các công cụ lập trình:
+ VBA (Visual Basic For Application)
+ VSTO (Visual Studio Tools for Office)
2.1.2 Sử dụng Visual Basic For Application
Mỗi công cụ lập trình luôn có những đặc điểm riêng và khó có thể phán xét cáinào hay hơn hoặc kém hơn một cách tổng quát Do đó, để lựa chọn được công cụ lậptrình thích hợp khi lập trình trên ứng dụng nền, cần dựa vào mục đích cụ thể Tronglĩnh vực xử lý tự động công tác văn phòng, hầu hết các bài toán lớn và cơ bản đã đượcgiải quyết, nhưng còn rất nhiều các bài toán khác, tuy không lớn và không quá phức
Trang 23tạp, nhưng rất đa dạng và khó khái quát, vẫn thiếu phần mềm thực hiện Nên phạm viứng dụng của lập trình trên ứng dụng nền là rất lớn và có tính hiệu quả cao Với quymô của các bài toán này, thì việc lựa chọn VBA làm công cụ lập trình là rất phù hợp:
- Ngôn ngữ lập trình Visual Basic (VB) là một loại ngôn ngữ dễ sử dụng, có sốlượng người dùng đông đảo và tài liệu tham khảo rất phong phú, nên việc trao đổi kỹnăng, tìm kiếm tài liệu, mã nguồn rất dễ dàng.
- Môi trường lập trình thân thiện, dễ dùng và đầy đủ nên việc xây dựng ứngdụng sẽ nhanh và không cần thêm công cụ lập trình nào khác.
- Trên tất cả các ứng dụng nền hỗ trợ Visual Basic For Application (VBA),giao diện lập trình là đồng nhất, do đó người dùng có thể lập trình mở rộng trên nhiềuứng dụng nền một cách thuận lợi.
- Thư viện lập trình có rất nhiều và đa dạng cho nên người dùng có thể xâydựng ứng dụng của mình nhanh và chuyên nghiệp.
- Tốc độ thực thi của chương trình nhanh.
- Khai thác được hầu hết các tính năng sẵn có của ứng dụng nền.
- Chương trình VBA có thể được nhúng trong tệp của ứng dụng nền (chẳng hạnnhư tệp bảng tính của Excel hay tệp văn bản của Word) hoặc có thể được lưu dưới dạngmột dự án độc lập Điều này giúp cho việc phân phối, chia sẻ mã lệnh được thuận tiện.
2.1.3 Đặc điểm của Visual Basic For Application
Từ các đặc điểm cơ bản đã được phân tích các phần trên, có thể thấy rằngVBA là một công cụ lập trình cho phép phát triển nhanh phần mềm và được tích hợpvào trong ứng dụng nền Về thực chất, VBA được xây dựng dựa trên kiến trúc COM,cho nên người dùng có thể sử dụng các thành phần sẵn có của ứng dụng nền trong việcxây dựng chương trình của mình với VBA.
Từ những macro ban đầu có thể tập hợp lại để xây dựng thành các dự ánchuyên biệt Tài liệu này tuy không đi sâu về vấn đề xây dựng dự án, nhưng sẽ kháiquát để học viên nắm được vấn đề có thể tự phát triển theo từng mục tiêu sau này.
Một dự án được xây dựng bằng VBA dựa trên ứng dụng nền nào thì nó phụthuộc chặt chẽ vào ứng dụng nền đó, bởi theo mặc định, dự án VBA sẽ hoạt động vàsử dụng các thành phần trong chính ứng dụng nền đó Điều này có nghĩa là rất khó cóthể chuyển đổi một dự án VBA từ loại ứng dụng nền này sang một ứng dụng nền kháccũng như tạo ra một ứng dụng chạy độc lập.
Sự khác biệt cơ bản nhất của VBA trong các ứng dụng nền (ví dụ giữa VBAtrong AutoCAD và VBA trong Excel) là cách thức sử dụng các thành phần (đốitượng) của ứng dụng nền Cho nên khi xây dựng ứng dụng bằng VBA, nên nắm rõ môhình đối tượng của ứng dụng nền và cách sử dụng chúng có thể sử dụng macro để phátsinh mã lệnh đối với các đối tượng.
2.1.4 Trình tự xây dựng một dự án bằng Visual Basic For Application
Về mặt trình tự thực hiện, việc xây dựng một dự án VBA bao gồm các bướcsau:
B1 Xác định rõ nhu cầu xây dựng chương trình Nhu cầu này được xác định
Trang 24dựa trên hoạt động thực tế của người dùng và thường do chính người dùng đề xuất.Đây là bước xác định các chức năng của chương trình.
B2 Xác định rõ mục tiêu mà chương trình cần đạt được, là phần cụ thể hóacủa bước 1, nếu như bước 1 có nhu cầu hoàn thiện nội dung mong muốn, thì bước 2này sẽ cụ thể mức độ hoàn thiện (đến đâu và như thế nào).
B3 Lựa chọn ứng dụng nền và công cụ lập trình phù hợp cho việc xây dựngchương trình Ví dụ với nhu yêu cầu tính liên quan đến thời gian, thì ứng dụng nền thíchhợp là VBA, hoặc trường của Word Tùy theo mức độ phức tạp của bài toán mà lựachọn công cụ lập trình phù hợp Ở đây VBA đảm bảo sự thuận tiện trong việc xây dựngcác mô-đun tính toán đối với những bài toán liên quan đến thời gian thông thường.
B4 Thiết kế hệ thống cho chương trình (hay dự án): bao gồm việc lập sơ đồkhối, xác định các mô-đun của chương trình, thiết kế giao diện nhập xuất dữ liệu vàkết quả, xây dựng hệ thống cơ sở dữ liệu sao cho thỏa mãn những đề xuất ở bước 1 và2.
B5 COM (Component Object Model): là một kiến trúc lập trình được thiết kếbởi Microsoft Mục đích của công nghệ này là tạo ra một chuẩn công nghệ trong lậptrình, mà ở đó cho phép xây dựng chương trình theo mô hình lắp ghép hay sử dụng lạicác sản phẩm đã được hoàn thiện từ trước theo chuẩn COM.
B6 Viết mã lệnh (lập trình): là việc sử dụng công cụ lập trình để tạo ra chươngtrình phù hợp với hệ thống đã được thiết kế ở bước 4.
B7 Kiểm thử chương trình: là công đoạn hoàn thiện và chuẩn bị đưa chươngtrình vào sử dụng.
Những công việc chính của bước này bao gồm:
- Kiểm tra xem các chức năng của chương trình đã thỏa mãn các yêu cầu đề ratừ trước chưa bằng cách chạy thử tất cả các tính năng của chương trình dựa trên mộtkịch bản cụ thể.
- Kiểm tra hiệu năng của chương trình: xem thời gian thực hiện và quy trình sửdụng chương trình có hợp lý không.
- Kiểm tra khả năng chịu lỗi của chương trình, như khi nhập số liệu sai Mộtchương trình đảm bảo khả năng chịu lỗi là nó sẽ không bị dừng lại đột ngột do lỗi thaotác của người dùng hay dữ liệu sai.
B8 Đóng gói, đưa chương trình vào sử dụng: bao gồm việc xây dựng tài liệuhướng dẫn cài đặt và sử dụng chương trình nhằm mục đích giúp người dùng có thểtriển khai chương trình vào thực tế.
B9 Tiếp nhận các góp ý, phản hồi của người dùng để bổ sung hay hoàn thiệnnhững khiếm khuyết của chương trình mà trong quá trình thiết kế hệ thống hay kiểmthử đã bỏ qua hoặc chưa phát hiện được.
B10 Nâng cấp chương trình: sau một thời gian sử dụng, dựa trên những phảnhồi của người dùng, nếu thấy rằng chương trình cần bổ sung thêm những tính năngmới thì người phát triển phần mềm sẽ thực hiện sự bổ sung này dựa trên những thànhphần đã có từ trước.
Trang 252.1.5 Cấu trúc của một dự án Visual Basic For Application
Một dự án VBA có cấu trúc tương tự như sau:
- Mô-đun chuẩn (Module): Nơi chứa các mã lệnh khai báo, các chương trìnhcon (hàm và thủ tục) Việc tạo ra các mô-đun chuẩn thường căn cứ theo các khối chứcnăng được đặt ra khi xây dựng hệ thống.
- Mô-đun lớp (Class Module): Nơi chứa định nghĩa các lớp của dự án.
- Userform: Giao diện dạng hộp thoại giúp cho việc giao tiếp giữa người sửdụng và chương trình được thuận tiện Thông thường sử dụng Userform để nhập sốliệu, xuất kết quả của chương trình Trong nhiều trường hợp, nếu việc nhập số liệu vàxuất kết quả được thực hiện trực tiếp trên ứng dụng nền thì không cần sử dụngUserform.
Những thành phần này là bộ khung để người dùng xây dựng chương trình, nhưviết mã lệnh hay thiết kế giao diện cho chương trình Mô-đun lớp và UserForm là haithành phần có thể có hoặc không tùy thuộc vào từng dự án và tất cả những thành phầnnày đều được hiển thị trên cửa sổ Project Explore của giao diện của VBA IDE.
Khi viết chương trình (mã lệnh) cụ thể thì cấu trúc của một chương trìnhthường được coi là sự bố trí, sắp xếp các câu lệnh trong chương trình đó Khái niệmcấu trúc này phụ thuộc vào từng loại ngôn ngữ lập trình Đối với ngôn ngữ lập trìnhVisual Basic (VB), thì cấu trúc chỉ tập trung vào chương trình con (hàm và thủ tục) màkhông có một quy định về cấu trúc nào đối với chương trình chính.
2.1.6 Môi trường phát triển tích hợp
Trong mỗi công cụ lập trình trên ứng dụng nền, luôn có một môi trường lậptrình nhằm hỗ trợ người dùng có thể xây dựng, thử nghiệm và hoàn thiện chương trìnhcủa mình Trong các phần mềm Office, khi sử dụng VBA để lập trình, môi trường lập
trình được gọi là Môi trường phát triển tích hợp (VBA IDE) Trên tất cả các ứng dụng
nền, VBA IDE có cấu trúc và hoạt động tương đương nhau với giao diện cơ bản nhưhình 2.1 và cách gọi giao diện VBA IDE từ ứng dụng nền như sau:
- Phím tắt: Từ giao diện chính của ứng dụng nền, nhấn tổ hợp phím Alt+F11.- Menu: Nhấn Tools/Macro/Visual Basic Editor (hình 2.1 trang 21)
- Thanh trình đơn (Menu bar): chứa tất cả các lựa chọn cần thiết để thao tác vớiVBA IDE
- Cửa sổ dự án (Project Explorer Window): liệt kê dưới dạng cây phân cấp cácdự án hiện đang được mở trong VBA IDE và các thành phần có trong từng dự án nhưcác tài liệu thành phần, các mô-đun chứa chương trình con, các mô-đun lớp, các cửasổ do người dùng tạo.
Việc thêm các thành phần mới vào trong một dự án được thực hiện trong menuInsert của VBA IDE Ví dụ muốn thêm một mô-đun chuẩn vào trong dự án, chọn
- Cửa sổ mã lệnh (Code Window): mỗi thành phần được liệt kê trong cửa sổdự án đều có một cửa sổ mã lệnh riêng, chứa mã lệnh cho thành phần đó Người dùngcó thể hiệu chỉnh mã lệnh, tạo ra mã lệnh mới trong cửa sổ mã lệnh.
Trang 26- Cửa sổ tra cứu đối tượng (Object Browser Window): hiển thị các lớp, phươngthức, thuộc tính, sự kiện và hằng số có trong thư viện đối tượng và trong dự án màngười dùng vừa tạo.
Hình 2.1 Giao diện chính của VBA IDE
- Có thể sử dụng cửa sổ này để tìm kiếm, tra cứu tất cả các đối tượng vừa tạo racũng như các đối tượng trong các chương trình khác.
- Cửa sổ đối tượng trực quan (Visual Object Window): khi người dùng tạo cácđối tượng trực quan thì cửa sổ này sẽ cho phép người dùng thao tác trên các điều khiểnmột cách dễ dàng và thuận tiện.
- Hộp công cụ chứa điều khiển (Tool Box): chứa các thanh công cụ giúp ngườidùng có thể chèn các điều khiển vào cửa sổ người dùng (UserForm).
- Cửa sổ thuộc tính (Properties Window): cửa sổ này liệt kê tất cả các thuộctính của đối tượng, qua đó người dùng có thể tham khảo và thay đổi các thuộc tính khicần như màu chữ, tên đối tượng…
2.2 Cơ bản về ngôn ngữ lập trình Visual Basic
2.2.1 Những qui định về cú pháp
Cửa sổ dự án
Cửa sổ mã lệnh
Cửa sổ thuộc tính
Hộp ToolBox
Cửa sổ tra cứu đối
tượngĐối tượng trực quan
Thanh thực đơn
Trang 27Cú pháp được hiểu là một một tập hợp bao gồm các quy tắc, luật lệ về trật tựvà hình thức viết của một câu lệnh hay một cấu trúc lệnh.
Trong ngôn ngữ lập trình Visual Basic (VB), cũng như các ngôn ngữ lập trìnhkhác, đều có những quy định về cú pháp cho việc viết mã lệnh và người lập trình cầnphải tuân theo các quy tắc này để trình biên dịch có thể dịch mã lệnh mà không phátsinh lỗi Sau đây là các quy định cơ bản về cú pháp của VB:
- Các câu lệnh phải là các dòng riêng biệt Nếu có nhiều lệnh trên cùng mộtdòng thì giữa các lệnh ngăn cách nhau bằng dấu hai chấm (:) Nếu dòng lệnh quá dài,muốn ngắt lệnh thành hai dòng thì sử dựng dấu cách và dấu gạch dưới (_).
- Nếu muốn chèn thêm ghi chú, phải bắt đầu dòng chú thích bằng dấu nháy đơn (’).- Qui ước khi đặt tên: phải bắt đầu bằng kí tự kiểu chữ cái thông thường; khôngchứa dấu chấm, dấu cách hay các ký tự đặc biệt khác; không quá 255 kí tự; không trùngvới các từ khoá; các biến có cùng một phạm vi thì không được đặt tên trùng nhau.
2.2.2 Các trợ giúp về cú pháp trong quá trình viết mã lệnh
Các quy tắc về cú pháp thường khó nhớ đối với những người mới học lập trìnhhay mới sử dụng ngôn ngữ lập trình mới, cho nên, để thuận tiện cho người lập trình,VBA IDE cung cấp tính năng tự động phát hiện lỗi cú pháp trong quá trình viết mãlệnh Tuy nhiên việc kiểm tra tự động này có thể gây khó chịu cho những lập trìnhviên chuyên nghiệp, những người rất hiếm khi mắc lỗi cú pháp khi lập trình, cho nênchức năng này chỉ hoạt động khi được kích hoạt (hình 2.2 trang 22), cách làm nhưsau:
Chọn Tools/Options/Editor/Code Settings
Hình 2.2 Bật/Tắt trợ giúp phát hiện lỗi cú pháp của VBA IDE
Trang 28Hình 2.3 VBA IDE tự động kiểm tra lỗi cú pháp và thông báo cho người dùng lỗi đó
Ý nghĩa của các tùy chọn đáng lưu ý là:
- Tự động kiểm tra lỗi cú pháp (Auto Systax Check): Tùy chọn này cho phép
VBA IDE tự động phát hiện lỗi cú pháp ngay sau khi người dùng kết thúc dòng lệnh(xuống dòng mới), một hộp thoại thông báo vị trí gây lỗi cũng như nguyên nhân gâylỗi Nếu người dùng bỏ qua không sửa ngay thì dòng lệnh có lỗi sẽ được đánh dấu.
- Kiểm tra các biến (Require Variable Declaration): Trong VB, người dùng
có thể sử dụng một biến mà không cần khai báo Trong trường hợp này biến sẽ đượckhởi tạo và nhận một giá trị mặc định Tuy nhiên, nếu lạm dụng điều này, rất có thể sẽlàm cho chương trình khó quản lý và dễ nhầm lẫn, vì thế VBA IDE cung cấp tùy chọnnày để cho phép người dùng thiết lập tính năng kiểm soát quá trình khai báo biến Khitùy chọn này được kích hoạt, tất cả các biến đều phải khai báo trước khi sử dụng vàVBA IDE sẽ tự động thêm vào đầu của mỗi mô-đun dòng lệnh “Option Explicit”.
Hình 2.4 VBA IDE tự động thông báo lỗi khi biến được sử dụng mà chưa khai báo
Trang 29Hình 2.5 Danh sách các thành phần được tự động hiển thị.
Mã lệnh, thông thường là một tập hợp bao gồm các từ khóa, câu lệnh, tên biếnhay toán tử được sắp xếp theo một trật tự nhất định Tên của các thành phần này có thểkhó nhớ chính xác hoặc quá dài, cho nên VBA IDE đưa ra tính năng này bằng cáchhiển thị những thành phần có thể phù hợp với vị trí dòng lệnh đang soạn thảo trongmột danh sách và sẽ tự động điền vào chương trình theo lựa chọn của người dùng(bấm phím Tab) Để kích hoạt tính năng này thực hiện:
- Tự động hiển thị danh sách các thành phần của đối tượng (Auto List Member):Với tùy chọn này, khi một đối tượng của ứng dụng nền hay của chương trình được gọira để sử dụng thì một danh sách các thành phần của nó (bao gồm các phương thức vàthuộc tính) sẽ được tự động hiển thị để người dùng chọn, sau khi bấm phím Tab, tên củathành phần này sẽ được tự động điền vào vị trí thích hợp trong dòng lệnh.
- Tự động hiển thị cú pháp cho chương trình con (Auto Quick Info): Với tùychọn này, VBA IDE sẽ hiển thị những thông tin về tham số của một hàm hay thủ tục(đã được xây dựng từ trước) khi người dùng sử dụng nó Các thông tin này bao gồmtên của tham số cùng với kiểu của nó.
Hình 2.6 Tự động hiển thị thông tin của các tham số trong chương trình congiúp kiểm soát được việc lập trình
- Tự động hiển thị giá trị của biến (Auto Data Tips): Với tùy chọn này, trongchế độ gỡ lỗi (Break mode), giá trị của biến (được gán trong quá trình chạy củachương trình) sẽ được hiển thị khi người dùng đặt chuột tại vị trí biến.
Ngoài ra, nếu những tính năng trợ giúp trên chưa được kích hoạt, trong quátrình viết mã lệnh, người dùng có thể kích hoạt tạm thời chúng bằng cách nhấn tổ hợp
phím Ctrl – Space Cần chú ý rằng, khi danh sách trợ giúp hiện ra, người dùng có thể
sử dụng chuột hoặc phím mũi tên để lựa chọn mục cần sử dụng trong danh sách đó rồi
bấm phím Tab để xác nhận.
2.2.3 Từ khoá trong VBA
Từ khoá là tập hợp các từ cấu thành một ngôn ngữ lập trình Mỗi ngônngữ lập trình đều có một bộ từ khoá riêng, dưới đây là danh sách các từ khoátrong ngôn ngữ lập trình VBA:
Trang 30Các từ khóa là những từ được dùng riêng cho những chức năng khác nhautrong 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 haychương trình con Nên việc đặt tên (biến, chương trình con) bắt buộc phải khác so vớicác từ khóa, nếu không sẽ phát sinh lỗi cú pháp.
Hình 2.7 VBA IDE báo lỗi do tên biến trùng tên với từ khóa
2.2.4 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ộtvài thông số trong chương trình.
VD 2: Trong chương trình giải phương trình bậc 2, các thành phần trongphươ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 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à có 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 nhau cho nên trong ngôn ngữ lập trìnhnào cũng luôn có nhiều kiểu dữ liệu để thích ứng với nhu cầu đa dạng của việc lậptrình.
Kiểu dữ liệu là loại giá trị mà một biến có thể nhận, nói cách khác, khi mộtbiến được khai báo thì buộc phải gán cho nó một kiểu dữ liệu nhất định Về tổng thểcó thể chia các kiểu dữ liệu trong VB ra làm hai loại:
- Các kiểu dữ liệu được định nghĩa sẵn trong VB: là những kiểu dữ liệu cơ bảnvà thường gặp như kiểu số thực (Double), số nguyên (Integer), Chuỗi (String)
- Các kiểu dữ liệu do người dùng tự định nghĩa: là kiểu dữ liệu được tự xâydựng dựa trên những thành phần dữ liệu cơ bản trong VB Cách xây dựng kiểu dữ liệunày được đề cập sơ lược trong phần dưới.
Trang 31a) Kiểu logic (boolean)
Chỉ chứa hai giá trị TRUE và FALSE (đúng và sai) Khi chuyển từ các dữ liệudạng số sang kiểu logic, 0 sẽ được chuyển thành FALSE còn giá trị khác sẽ đượcchuyển thành TRUE Khi chuyển từ kiểu logic sang kiểu số, giá trị FALSE sẽ đượcchuyển thành 0 còn giá trị TRUE sẽ được chuyển thành -1.
‘Khai báo biến A là kiểu logicDim A As Boolean
Biến A lúc này chỉ có thể nhận cặp giá trị: True hay False.
b) Kiểu số nguyên
Dùng để chứa các giá trị là số nguyên và có vài loại dữ liệu kiểu này Sự khácnhau của những loại dữ liệu này là giới hạn giá trị (lớn nhất và nhỏ nhất) mà biến cóthể nhận được.
Bảng 2.2 Giá trị của các kiểu số nguyênKiểu số nguyênKích
-Currency 8 bytes Từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807
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 chỉ việc gọi phần tử cần dùng theo chỉ số tương ứng.
Trang 32‘Gán giá trị 100 cho phần tử thứ 2Matrix_1(1)=100
‘Gán giá trị 100 cho phần tử cuối cùngMatrix_1(10)=100
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
Dim Matrix_3(1 To 3, 1 To 5) As Double
‘Gán giá trị 100 cho phần tử tại hàng thứ 2 cột thứ 3Matrix_3(2,3)=100
Trong VB, mảng có thể có một chiều hoặc nhiều chiều, kích thước của mảngđược xác định dựa trên số chiều và biên trên, biên dưới của mỗi chiều Các thành phầntrong mảng là liên tục giữa hai biên.
Trong các ví dụ trên, các mảng có kích thước (hay số lượng phần tử) là khôngthay đổi trong suốt quá trình hoạt động của chương trình Loại mảng này được gọi là
mảng tĩnh và thường được dùng cho những bài toán biết trước số phần tử của mảng
hay kích thước mảng không lớn Ngoài loại mảng tĩnh này, trong VB còn cho phépđịnh nghĩa một loại mảng khác mà kích thước (hay số lượng phần tử) của nó có thểthiết lập lại ngay trong lúc chương trình đang hoạt động, loại mảng này được gọi là
mảng động Với mảng động, người lập trình không cần biết số phần tử của mảng trong
lúc lập trình, số phần tử này sẽ được thiết lập trong quá trình chương trình hoạt độngdựa theo nhu cầu của từng bài toán cụ thể.
Khi một mảng động, mà các phần tử của nó đã được gán giá trị, cần thay đổikích thước, sẽ có hai tình huống cần xét đến:
- Toàn bộ giá trị ban đầu (trước lúc thay đổi kích thước mảng) sẽ bị hủy bỏ, cácphần tử mảng mới (sau khi thay đổi kích thước) sẽ nhận giá trị mặc định.
‘Khai báo mảng A là mảng độngDim A() As Long
‘Xác định kích thước cho mảng động A: mảng 1 chiều có 5 phần tửRedim A(1 to 5) As Long
‘Gán giá trị cho phần tử của mảng AA(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ỏamãn:
Trang 33- 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ốicù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ả khimảng được định lại kích thước.
VD 4:
‘Khai báo mảng động ADim A() As Long
‘Gán kích thước cho mảng AReDim A(1 To 3, 1 To 3) As Long‘Gán giá trị cho phàn tử của mảng AA(1,1) = 100: A(1,2) = 200A(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ớiReDim Preserve A(1 To 3, 1 To 5) As Long
Trong VD 4, các phần tử của mảng A được giữ lại giá trị sau khi kích thướccủa mảng được thay đổi lại Lưu ý, 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ó.
e) 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 đadạng: Có thể là chữ số, chữ cái, dấu cách (space), ký hiệu Số lượng ký tự trong mộtchuỗi là rất lớn (216 ký tự) Mặc định trong VB, các biến hay tham số kiểu chuỗi cóchiều dài thay đổi tùy theo giá trị dữ liệu được gán cho nó.
Dim S As String
S=”ABCD 1234 @#$%”
Để tạo điều kiện thuận lợi cho người dùng, bên trong VB có sẵn một số hàmliên quan đến xử lý chuỗi, ví dụ như cắt chuỗi, tách chuỗi, ghép chuỗi, tìm kiếm, …Các hàm cơ bản này có thể tra cứu toàn bộ các hàm liên quan trong MSDN (MicrosoftDeveloper Network) hoặc Object Browser (thư viện Strings) bằng cách nhấn phím F2trong giao diện lập trình VBA IDE.
Trang 34Hình 2.8 Thông tin về các hàm trong thư viện lập trình của VBA được hiển thịtrong Object Browser
f) Kiểu thời gian (Date)
Dùng để lưu trữ và thao tác trên các giá trị thời gian (ngày và giờ) Định dạngngày và giờ phụ thuộc vào các thiết lập về hiển thị trong hệ thống Khi chuyển từ cácdữ liệu kiểu số sang kiểu ngày tháng, các giá trị ở bên trái dấu phẩy chuyển thành thôngtin về ngày còn giá trị ở bên phải dấu phẩy sẽ được chuyển thành thông tin về giờ.
VD 5:Dim D As DateDim S As StringD = Now()
S = “Ngay: “ & Day(D) & “ - Thang: “ & Month(D) & “ - Nam: “ & Year(D)Debug.Print (S)
VD5 sẽ hiển thị thông tin về thời gian (ngày – tháng – năm) trong cửa sổImmediate của VBA IDE.
g) 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ị đặcbiệ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ảimá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ử.
‘Gán biến V với giá trị kiểu logicV = True
Trang 35‘Gán biến V với một dữ liệu kiểu thời gianV = #01/06/2007#
Sử dụng hàm VarType(vVariant) sẽ cho ra mã của kiểu dữ liệu hiện đang lưutrữ trong biến Variant.
Bảng 2.4 Giá trị trả về và ý nghĩa
1vbNull Không có dữ liệu hợp lệ trong variant
h) Kiểu tự định nghĩa (user-defined type)
Kiểu tự định nghĩa là kiểu dữ liệu do người dùng định nghĩa, tương tự như kiểubản ghi (Record) trong ngôn ngữ lập trình Pascal hay kiểu cấu trúc (Struct) trong ngônngữ lập trình C Kiểu tự định nghĩa bao gồm nhiều trường dữ liệu, mỗi trường dữ liệucó thể là các kiểu dữ liệu cơ bản hoặc các kiểu tự định nghĩa khác.
i) Kiểu lớp (Class)
Kiểu lớp (Class) là một mở rộng của kiểu dữ liệu tự định nghĩa, sự khác biệt cơbản ở đây là trong kiểu lớp còn có những đoạn chương trình dùng để xử lý chínhnhững dữ liệu trong nó Dữ liệu bên trong lớp thường được gọi là các thuộc tính(Properties), còn những đoạn chương trình trong lớp để xử lý dữ liệu này thực chất làcác Hàm/Thủ tục (Function/Sub) được định nghĩa bên trong lớp và thường được gọi làcác Phương thức (Methods) Một biến có kiểu dữ liệu là lớp được gọi là một đối tượng(Object) và cách sử dụng các Properties, Methods của đối tượng này tương tự nhưcách sử dụng các thành phần của kiểu dữ liệu tự định nghĩa.
Lớp cần được xây dựng trong Class Module hoặc có thể sử dụng lại các lớpsẵn có từ các thư viện lập trình.
Như vậy lớp có thể gồm các thành phần sau:
- Các thuộc tính (Property): là các dữ liệu mô tả trạng thái của bản thân đốitượng hoặc các quan hệ của nó với các đối tượng khác.Về bản chất, thuộc tính là cácbiến được khai báo trong lớp đó Kiểu dữ liệu của các thuộc tính có thể là các kiểu dữliệu cơ bản hoặc có thể là một lớp khác (kiểu Class).
- Các phương thức (Method): mô tả hành vi, chức năng của đối tượng Về bảnchất, phương thức là các chương trình con được xây dựng bên trong lớp và chúng cónhiệm vụ xử lý các dữ liệu của chính lớp đó.
- Các sự kiện (Event): Sự kiện giúp cho lớp có khả năng giao tiếp với các lớpkhác hoặc với môi trường ngoài Thường dùng để xử lý khi có tác động lên đối tượng.Sự kiện, về bản chất là một chương trình con dạng Sub và được tự động gọi ra tương
Trang 36ứng với tác động nào đó lên đối tượng ví dụ như TextBox, thì có các sự kiện như bấm
phím hay thay đổi nội dung.
Trong khuôn khổ của giáo trình này, các vấn đề liên quan đến xây dựng lớp sẽkhông được đề cập chi tiết.
2.2.5 Khai báo trong Visual Basic For Application
Trong VBA, muốn sử dụng một biến có thể không cần khai báo, tuy nhiêncách làm này chỉ nên dùng khi viết các chương trình nhỏ, còn đối với các chương trìnhlớn, có nhiều mô-đun, thì nên bắt buộc khai báo biến trước khi sử dụng (theo cách thiếtlập ở mục 2 của chương này).
Khai báo biến, về thực chất, chính là việc tạo mã lệnh (lập trình) cho nên cácđoạn mã lệnh khai báo biến có thể đặt ở bất cứ thành phần nào trong dự án VBA (mô-đun chuẩn, mô-đun lớp, và Userform) Tùy theo nhu cầu sử dụng biến để giới hạnphạm vi sử dụng của biến đó sao cho việc lập trình được thuận tiện nhất dựa trênnhững nguyên tắc sau:
- Khi biến khai báo trong chương trình con nào thì phạm vi sử dụng của nó
được giới hạn trong chính chương trình con đó Biến loại này được gọi là biến cục bộ.
- Sử dụng từ khóa Public để xác định phạm vi sử dụng biến là trong toàn bộ dự
án, nghĩa là từ bất cứ nơi đâu trong dự án (mô-đun chuẩn, mô-đun lớp, và Userform)
đều có thể sử dụng biến này Biến được khai báo với từ khóa Public thường được gọi là
biến toàn cục Trong mô-đun nào đó, nếu một biến được khai báo với từ khóa Dim, thì
mặc định, biến đó là biến cục bộ, nghĩa là tương đương với việc sử dụng từ khóa
Chú ý: Không sử dụng các từ khoá Public, Private hay Friend cho khai báo
dữ liệu nằm bên trong chương trình con.
Ở mức độ rộng hơn, có thể coi biến như một khối dữ liệu của chương trình vàmức độ toàn cục được chia làm hai loại như sau:
- Toàn cục ở mức ứng dụng: Trong trường hợp ứng dụng gồm nhiều dự án
(multiprojects), nếu trong một mô-đun không có khai báo lựa chọn Option PrivateModule thì tất cả các thành phần dữ liệu hay chương trình được khai báo Public trong
mô-đun đó có phạm vi hoạt động toàn bộ ứng dụng – nghĩa là chúng còn có thể đượctham chiếu từ những dự án khác trong ứng dụng.
- Toàn cục ở mức dự án: Trong trường hợp ứng dụng gồm nhiều dự án
(multi-projects), nếu trong một mô-đun có khai báo lựa chọn Option Private Module thì tấtcả các thành phần dữ liệu hay chương trình được khai báo Public trong mô-đun đó chỉ
có phạm vi hoạt động trong nội bộ dự án chứa mô-đun mà không thể được tham chiếutừ những dự án khác trong ứng dụng.
- Sử dụng từ khóa Private để xác định phạm vi hoạt động của biến là trong nội
bộ của mô-đun đó, tất cả các chương trình con hay bất cứ thành phần nào của mô-đunnày đều có thể sử dụng biến loại này nhưng chúng không thể truy cập được từ nhữngmô-đun hay Userform khác trong dự án.
Khi khai báo kiểu dữ liệu người dùng tự định nghĩa hoặc các chương trình con
Trang 37trong một mô-đun, nếu không chỉ rõ phạm vi hoạt động thì pham vi hoạt động mặc
định là Public.
Để tránh các nhầm lẫn do không nhớ phạm vi hoạt động mặc định, người dùngnên chỉ rõ phạm vi hoạt động của chương trình hay dữ liệu ngay khi khai báo.
- Ngoài ra, trong các mô-đun lớp (Class Module) hoặc mô-đun lệnh của
UserForm còn có thể sử dụng từ khóa Friend để xác định phạm vi hoạt động của một
chương trình con (phương thức) Khi sử dụng từ khóa này, chương trình con có thểđược truy xuất từ mọi nơi trong nội bộ dự án (Project) chứa nó, nhưng không thể được
truy xuất trong những dự án khác của ứng dụng (khác với khi dùng từ khóa Public –
chương trình con có thể được truy xuất từ mọi nơi của ứng dụng).
Các khai báo dữ liệu với các từ khoá trên được thực hiện trong phần General
của một môđun.
Các dữ liệu đó còn được gọi là dữ liệu cấp mô-đun (module level).
Trong mỗi mô-đun, phần đầu tiên (của phần viết mã lệnh) được gọi là phầnGeneral của mô-đun đó Theo quy ước, các thiết lập cho mô-đun được đặt ở đây vàVBA IDE sẽ tự động phân cách phần này bằng một đường chấm mờ Không có giớihạn về kích thước cho phần này.
a) Khai báo hằng số
Hằng số là một loại biến đặc biệt mà giá trị của nó được xác định ngay lúc khaibáo và luôn không thay đổi Nên dùng cách này cho những hằng số hay phải dùng lặplại trong chương trình.
VD 7: Hằng số π = 3.14159 Sau khi khai báo hằng số này:Const Pi=3.14159
Có thể sử dụng giá trị 3.14159 bất cứ chỗ nào trong chương trình với cái tên dễ
nhớ hơn là Pi.
Cú pháp:
[Public/Private] Const <tên_hằng>=<giá_trị_hằng_số>
Các từ khoá Public hay Private xác định phạm vi hiệu lực của hằng số, với từkhoá Public, hằng số này có thể sử dụng ở bất cứ đâu trong ứng dụng, còn với từ khoáPrivate thì hằng số này chỉ có thể sử dụng bên trong mô-đun nơi khai báo hằng số đó.
Ý nghĩa của hai từ khóa này cũng không thay đổi cho tất cả các phần khác mà có sửdụng chúng.
b) Khai báo biến
Cú pháp:
Dim <tên_biến> as <Kiểu_dữ_liệu>
Khi dùng từ khóa Public hay Private nhằm xác định phạm vi hiệu lực củabiến thay cho từ khóa Dim trong khai báo biến thì cú pháp như sau:
Public <tên_biến> as <Kiểu_dữ_liệu>
Private <tên_biến> as <Kiểu_dữ_liệu>
c) Khai báo kiểu tự định nghĩa
Trong VB có thể khai báo các kiểu dữ liệu theo nhu cầu của người sử dụng Cú
Trang 38pháp khai báo như sau:
Type <Tên_ kiểu>
<tên_trường_1> as <Kiểu_dữ_liệu><tên_trường_2> as <Kiểu_dữ_liệu>…
<tên_trường_n> as <Kiểu_dữ_liệu>End Type
Sau khi khai báo kiểu tự định nghĩa, người dùng có thể sử dụng các biến cókiểu tự định nghĩa bằng cách khai báo như các biến thông thường, với<Kiểu_dữ_liệu> được thay bằng <Tên_kiểu> Để truy cập tới một trường của biến
kiểu bản ghi, dùng toán tử (.) hoặc dùng cặp từ khóa With… End With.
Các từ khoá Public hay Private nhằm xác định phạm vi hoạt động của kiểu
dữ liệu được khai báo Đồng thời khai báo kiểu chỉ được thực hiện ở cấp mô-đun(không thực hiện được trong các chương trình con) Khi không chỉ rõ thì phạm vi hoạt
động thì mặc định của một kiểu dữ liệu tự định nghĩa là Public.
d) Khai báo mảng tĩnh
Cú pháp:
[Public/Private/Dim] <tên_mảng> (<thông_số_về_chiều>) as <tên_kiểu>
Các thông số về chiều có thể biểu diễn qua các ví dụ.VD 8:
Dim a(3 To 5) As Integer ‘Mảng 1 chiều với các chỉ số từ 3 đến 5Dim A(3) As Long ‘Mảng 1 chiều với chỉ số đến 3 (mảng 1 chiều có‘4 phần tử với chỉ số từ 0 đến 3)
Dim A(2 To 4, 6) As Double ‘Mảng 2 chiều với một miền chỉ số từ 2 tới 4‘và một miền có chỉ số từ 0 đến 6.
Các từ khoá Public hay Private xác định phạm vi hoạt động của biến mảng
(trong trường hợp mảng được khai báo mức mô-đun) Các qui định về phạm vi hoạtđộng của mảng tương tự với biến thông thường.
e) Khai báo mảng động
Cú pháp:
[Public/Private/Dim] <tên_mảng> () as <tên_kiểu>
Trong khai báo trên không chứa các thông số về chiều và đó thuần túy chỉ làmột khai báo Các phần tử của mảng chưa được tạo ra (hay nói cách khác mảng vẫnchưa thực sự được cấp phát bộ nhớ) và vẫn chưa sẵn sàng để sử dụng Trước khi sửdụng mảng động hoặc khi muốn thay đổi kích thước của mảng, sử dụng lệnh Redim.Cú pháp như sau:
Redim <tên_mảng> (<các thông số về chiều>) as <tên kiểu>
Chú ý: <tên_kiểu> phải đúng như khai báo ban đầu, các thông số về chiều có
thể khác trước cả về số chiều và kích thước của từng chiều Khi đó, các dữ liệu cũtrong mảng không còn nữa, thay vào đó là những phần tử mới được khởi tạo.
f) Khai báo, tạo và làm việc với biến đối tượng
Khai báo và tạo biến đối tượng phải dùng thêm từ khóa New
Dim <tên_biến> as New <Kiểu_dữ_liệu>
Trang 39<Kiểu_dữ_liệu> là lớp (class) đã được định nghĩa từ trước.Phép gán đối tượng được thực hiện với từ khóa Set:
Set <biến_đối_tượng> = <giá_trị>
Chú ý rằng nếu thực hiện khai báo một biến đối tượng như thông thường(không có từ khóa New) thì biến thực sự chưa được tạo ra Trong trường hợp đó,người sử dụng phải tạo và gán đối tượng với các từ khoá tương ứng là New và Set.
Dim <tên_biến> as <Kiểu_dữ_liệu>Set <tên_biến> = New <Kiểu_dữ_liệu>
Chú ý: Câu lệnh Set không phải là câu lệnh khai báo, vì vậy nó phải được viết
trong một chương trình con nào đó không thể nằm trong phần General của một mô-đun.Làm việc với một biến đối tượng tức là quá trình thao tác với đối tượng thôngqua các thuộc tính, phương thức và các sự kiện của đối tượng đó Để truy cập tới cácthuộc tính và phương thức của đối tượng, sử dụng theo cú pháp sau, chú ý đến dấuchấm (.) giữa tên biến và tên thuộc tính hay tên phương thức:
- Toán tử gán =
Gán giá trị cho biến hoặc thuộc tính.- Toán tử toán học gồm:
+ Cộng: ++ Trừ: -+ Nhân: *+ Chia:/
+ Chia lấy phần nguyên: \+ Chia lấy phần dư: MOD+ Luỹ thừa: ^
- Toán tử logic
+ Not: Trả về giá trị phủ định với giá trị biểu thức Not(TRUE)=FALSE+ And: Nối logic hai biểu thức Kết quả chỉ đúng khi tất cả các biểu thức đềuđúng Với 2 biểu thức thì: And(TRUE,TRUE)=TRUE; các trường hợp khác cho kếtquả bằng FALSE
+ Or: Kết quả đúng chỉ cần 1 biểu thức đúng Với 2 biểu thức thìOr(FALSE,FALSE)=FALSE; các trường hợp khác cho kết quả là TRUE.
+ Xor: Cho kết quả TRUE nếu hai đối số có cùng giá trị (cùng đúng hoặc cùngsai); ngược lại cho kết quả là FALSE
+ Eqv: Cho kết quả TRUE nếu hai đối số khác giá trị (1 đúng và 1 sai) Nếu
Trang 40giống nhau cho kết quả FALSE.- Toán tử so sánh
+ So sánh bằng =+ Khác nhau <>+ Lớn hơn >
+ Lớn hơn hoặc bằng >=+ Nhỏ hơn <
+ Nhỏ hơn hoặc bằng <=
b) Các hàm toán học
Các hàm toán học được chứa trong thư viện Math (có thể tra cứu thư viện nàybằng Object Browser) và có nhiệm vụ thực hiện các phép toán thông thường hay gặp.Sau đây là một số hàm thông dụng:
- Abs(x) Lấy giá trị tuyệt đối- Exp(x) Lấy mũ cơ số tự nhiên- Log(x) Logarit cơ số tự nhiên- Sqr(x) Lấy bình phương
- Cos(x), Sin(x), Tan(x) Hàm lượng giác- Atn(x) Hàm lượng giác ngược
- Fix(x) Lấy phần nguyên (trước dấu phẩy) Fix(3.7)=3- Int(x) Lấy phần nguyên đã được làm tròn Int(3.7)=4
- Round(x,num) Làm tròn số thực <x> đến <num> chữ số sau dấu phẩy- Val(str) Chuyển đổi chuỗi <str> thành giá trị kiểu số
c) Các hàm chuyển đổi dữ liệu
Chuyển đổi định dạng số liệu là một nhu cầu thường gặp trong lập trình do cácngôn ngữ lập trình luôn đòi hỏi kiểu dữ liệu phải rõ ràng và cố định cho từng biếnnhằm tránh phát sinh các lỗi sau này Việc chuyển đổi này, nếu trong trường hợpthông thường, thì VB sẽ tự động thực hiện.
Nhưng khi gặp các yêu cầu đặc biệt thì buộc người dùng phải sử dụng nhữnghàm chuyển đổi phù hợp.
Việc chuyển đổi kiểu dữ liệu luôn có thể tạo ra lỗi do không thể chuyển đổiđược hoặc phát sinh kết quả sai Cho nên khi sử dụng cần chú ý đến các khả năng gâylỗi của việc chuyển đổi kiểu dữ liệu.
Các hàm này được chứa trong thư viện Conversion (có thể tra cứu thư viện nàybằng Object Browser) Sau đây là một số hàm thông dụng:
- CBool(Expression) Chuyển đổi dữ liệu sang kiểu logic (Boolean)- CByte(Expression) Chuyển đổi dữ liệu sang kiểu Byte
- CInt(Expression) Chuyển đổi dữ liệu sang kiểu nguyên (Integer)- CLng(Expression) Chuyển đổi dữ liệu sang kiểu nguyên (Long)- CDbl(Expression) Chuyển đổi dữ liệu sang kiểu thực (Double)- CSng(Expression) Chuyển đổi dữ liệu sang kiểu thực (Single)- CStr(Expression) Chuyển đổi dữ liệu sang kiểu xâu (String)- Str(Number) Chuyển đổi dữ liệu số sang kiểu xâu (String)