Tải bản đầy đủ (.doc) (14 trang)

Lập trình mở rộng thông qua môi trường lập trình VBA được tích hợp sẵn trong microsfot excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (133.04 KB, 14 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
LỜI CẢM ƠN
Để có thể hoàm thành bài TIỂU LUẬN này, em sinh viên:NGUYỄN THI HẬU
xin gửi lời cảm ơn chân thành tới các cán bộ giáo viên trong trường . Em xin
chân thành cảm ơn các thầy cô đã tạo điều kiện cho em được tiếp cận tài liệu,
thông tin khi em làm bài. Đặc biệt em xin cảm ơn thầy: NGUYỄN XUÂN LÔ
người đã trực tiếp hướng dẫn em hoàn thành đề tài này.
LỜI MỞ ĐẦU
Microsoft Excel là một chương trình xử lý bảng tính rất mạnh, có thể giải
quyết hầu hết các bài toán từ đơn giản đến phức tạp bằng những tính năng sẵn
có trong chương trình. Tuy vậy, việc lập trình mở rộng trên Excel vẫn luôn được
đề cập đến, không những chỉ với mục đích là lập trìnhtạo thêm những tính năng
mới cho Excel mà còn để kết hợp các tính năng sẵn có của chươngtrình Excel để
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 1
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
giải quyết những vấn đề mang tính chuyên biệt hoá cao.
Microsoft excel là một công cụ mạnh dùng trong việc phân tích & trình bày
các thông tin. Thế mạnh của bảng tính excel, ngoài các công thức sẵn có, còn là
macro của nó. Kể từ khi xuất hiện version 5.0 đến nay, ngôn ngữ dùng trong
excel là Visual Basic for Applications (VBA). Đó là ngôn ngữ lập trình dùng
chung cho nhiều phần mềm trong windows.
Bộ chương trình Dự Toán là một ví dụ cụ thể cho việc lập trình mở rộng trên
Excel. Các bài toán chuyên biệt về tính toán dự toán công trình đã được giải
quyết một cách dễ dàng dựa trên sự kết hợp giữa các hàm có sẵn trong Excel và
một số tính năng về cơ sở dữ liệu.
Việc lập trình mở rộng Excel có thể được thực hiện theo nhiều cách khác
nhau, nhưng đơn giản nhất có thể kể đến những cách sau:
 Lập trình mở rộng thông qua môi trường lập trình VBA được tích hợp
sẵn trong Microsfot Excel. Theo cách này, người sử dụng có thể lập trình mở
rộng Excel một cách nhanh chóng và dễ dàng với ngôn ngữ lập trình VBA. Các


ứng dụng được tạo ra theo cách này gắn liền với tệp tài liệu của Excel.
 Lập trình mở rộng thông qua bộ công cụ lập trình VISUAL BASIC
APPLICATION (VBA) trong bộ công cụ phát triển phần mềm Microsoft
Visual Basic. Theo cách này, người sử dụng có thể lập trình tạo ra các ứng dụng
chuyên nghiệp dạng Add-in (ứng dụng bổ sung trong Excel) bằng các ngôn ngữ
được hỗ trợ trong Microsoft Visual Basic. Ứng dụng mở rộng dạng này được
lưu trữ tách biệt với tệp tài liệu của Excel nên rất dễ dàng phân phối.
NỘI DUNG
I. Khái quát về VBA
VBA là viết tắt của cụm từ Visual Basic for Application. Nó là một ngôn
ngữ lập trình được phát triển bởi Microsoft Excel là một phần của bộ Office, nó
bao gồm luôn cả ngôn ngữ VBA mà không hề "tính thêm tiền". Có thể nói
VBA là một công cụ dùng để phát triển chương trình ứng dụng trong Excel nói
riêng và bộ Microsof Office nói chung.
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 2
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
VBA là một bộ phận của ngôn ngữ lập trình Visual Basic dành riêng để soạn
thảo các lệnh Macro trong bộ Office, giúp tăng cường sức mạnh và tự động hóa
một số công việc lặp đi lặp lại. Sẽ là một thuận lợi lớn nếu bạn hiểu rõ cách thức
VBA tham chiếu đến địa chỉ cell trong Excel.
Từ Office 95 Microsoft bắt đầu đưa vào một ngôn ngữ lập trình chung,
không chỉ áp dụng cho các ứng dụng như Word và Excel mà cho cả các công cụ
lập trình như VB. Microsoft gọi ngôn ngữ lập trình này là Visual Basic for
Applications (VBA).
II.1.Chúng ta có thể làm được gì cới VBA:
Chúng ta có thể làm được rất nhiều thứ, sau đây chỉ là một số trong chúng:
1. _Lưu giữ các danh sách như danh sách khách hàng, danh sách sinh viên,
danh sách hàng hoá.
2. _Lên kế hoạch.

3. Phân tích dữ liệu.
4. _Phát triển các biểu đồ từ nguồn dữ liệu lưu trữ._
 Và còn rất nhiều điều khác nữa.
 Dù với mục đích nào đi nữa thì tất cả đều có một điểm chung là nhằm
thực hiện tự động một số thao tác (có thể trong Excel hay các chương trình
khác). Đó có thể nói là khái quát về VBA.
 Giải thích thêm:
 Ví dụ bạn có thể tạo một Macro tự động đưa vào danh sách nhân viên bán
hàng của công ty.
 Thực hiện các công việc thường xuyên hay lập lại như báo cáo hàng
tháng.
 Tạo một lệnh người dùng. Bạn thường phải thực hiện một số lệnh từ
menu của Excel, nếu vậy bạn hãy dành chút thời gian để phối hợp các lệnh ấy lại
bằng các phím tắt hay nút lệnh.
 Tạo menu người dùng, tạo thanh công cụ ngừơi dùng.
 Tạo các hàm ngừơi dùng.
 Tạo các Add-In cho Excel hay cho các mục đích riêng.
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 3
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
III. Các thuận lợi và bất lợi của VBA:
III.3. 1.Thụân lợi:
* Excel luôn thực hiện các công việc một cách chính xác theo cùng một cách.
* Excel thực hiện các công việc nhanh hơn nhiều so với việc bạn ngồi bấm
máy tính lộc cộc (Dĩ nhiên ngoại trừ bạn nào "thiệt là thông minh").
* Nếu bạn là một lập trình viên Macro tốt thì Excel sẽ thực hiện các công
việc một cách chính xác mà không hề báo lỗi.
* Công việc (tasks) có thể thực hiện bởi một người không biết gì về Excel.
* Bạn có thể làm các việc trong Excel mà người khác thì không thể. Điều này
có thể làm cho bạn trở nên nổi tiếng!?

* Thời gian cũng là yếu tố quan trọng, bạn "bắt Excel" phải làm trong khi
bạn đi "uống cafe". Thật là thoải mái!
II.3.2. Bất lợi:
* Dĩ nhiên điều bất lợi đầu tiên là bạn phải học làm thế nào để viết chương
trình trong VBA. May mắn là nó không khó như bạn có thể đã nghỉ về nó.
* Nếu những người khác muốn dùng chương trình VBA của bạn, họ phải có
cài phần mềm Microsoft Excel.
* Nếu bạn viết chương trình không tốt, hay giải thuật bạn sai mà chương
trình bạn đã đưa vào sử dụng thì sẽ dẫn đến sai xót khó lường của việc phân tích
dữ liệu.
* VBA luôn luôn không ngừng phát triển để đạt đến mục tiêu của nó. Có thể
chương trình của bạn viết sẽ không thể nào thực hiện trên các phiên bản mới.
IV. Xây dựng hàm mới trong Excel
IV.4.1. Khái niệm về hàm trong
Hàm là những công thức đã được định nghĩa sẵn trong Excel thực hiện tính
toán dựa trên các số liệu đầu vào, gọi là tham số, theo một trình tự đã được lập
trình sẵn nhằm thực hiện các phép tính từ đơn giản đến phức tạp.
Để hiểu rõ hơn về cấu trúc của một hàm, ta tìm hiểu về hàm ROUND có sẵn
trong Excel, là hàm dùng để làm tròn số:
1. Cấu trúc. Một hàm bắt đầu bằng dấu bằng “=”, tiếp sau là tên hàm, dấu
ngoặc đơn “(“, danh sách các tham số cách nhau bằng dấu phẩy “,” và cuối cùng
là dấu ngoặc đơn “)”.
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 4
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
2. Tên hàm. Ấn phím SHIFT+F3 để hiển thị danh sách tất cả các hàm trong
Excel.
3. Các tham số. Tham số có thể là số, chữ, giá trị logic như TRUE hoặc
FALSE, mảng, giá trị lỗi như #NA, hoặc tham chiếu đến một ô khác. Tham số
truyền vào phải có kiểu thích hợp với kiểu của từng tham số tương ứng của hàm.

Tham số truyền vào có thể là một hằng số, công thức, hoặc là một hàm bất kỳ.
4. Chú thích hàm. Chú thích hàm dùng để thể hiện cấu trúc và danh sách các
tham số của hàm, hiện lên khi ta nhập vào tên hàm. Chú thích hàm chỉ xuất hiện
đối với những hàm được xây dựng sẵn trong Excel.
IV.4.2. Tại sao phải dùng hàm?
Ngoài việc cho phép tạo Macro, VBA còn cho phép ndười sử dụng tạo thêm
các hàm mới trong Excel. Khác với Macro, hàm trong VBA thường trả về một
giá trị hoặc một ma trận nào đó, tương tự như hàm Excel và các hàm có sẵn
trong VBA.
Hàm trong VBA có thể được sử dụng trong hai trường hợp:
 Sử dụng như một hàm để sử dụng trong các chương trình con của VBA
 Sử dụng như một hàm có sẵn trong các bảng tính.
Và như vậy, thực chất, hàm trong VBA có thể được sử dụng ở bất kỳ nơi nào
có thể dùng được hàm có sẵn của Excel và VBA.
Một câu hỏi đặt ra là với hơn 300 hàm có sẵn trong Excel cộng với các hàm
có sẵn trong VBA, tại sao lại cần phải tạo ra hàm mới? Câu trả lời rất đơn giản:
để đơn giản hoá công việc. Với một chút sáng tạo, người dùng có thể tạo thêm
các hàm mới phục vụ cho những nhu cầu của mình.
Không phải lúc nào các hàm có sẵn cũng có thể giải quyết được công việc
của người dùng, hoặc có thể giải quyết được nhưng phải thông qua rất nhiều
hàm khác nhau hoặc thực hiện theo một cách rất phức tạp. Thay vào đó, người
dùng có thể tạo ra một hàm mới đảm nhận nhiệm vụ này.
Hàm mới này có thể có cách thức tính toán hoàn mới, hoặc cũng có thể chỉ là
việc tập hợp lại các hàm sẵn có để tạo thành một hàm đơn giản hơn. Càng đơn
giản, càng dễ hiểu, dễ nhớ và dễ sử dụng
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 5
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
Lấy ví dụ như trong Excel, có cung cấp một bộ công cụ có tên là Lookup.
Bộ công cụ này cho phép người sử dụng tiến hành tra bảng 2 chiều một cách dễ

dàng. Nhưng việc tra bảng và nội suy không thể thực hiện được nhờ bộ công cụ
này. Vì thế, người sử dụng sẽ nghĩ ngay đến việc sử dụng VBA để tạo ra một bộ
công cụ mới dùng để tra bảng và nội suy 2 chiều. Đây sẽ là một công cụ tốt phục
vụ cho quá trình tính toán, nhất là đối với ngành công trình.
V. Xây dựng cấu trúc chương trình
Khi xây dựng các đề án với Visual Basic For Application phải chia các công
việc nhập, tính toán, xuất sao cho càng rõ ràng, rành mạch càng tốt. Các công
thức dùng cho nhập và xuất , phần quan trọng là phải viết phần tính toán, trung
tâm xử lý một chương trình Visual Basic For Application.
Thông thường với Visual Basic các thủ tục được tiến hành tuần tự theo các
dòng để lập trình. Nhưng nhiều khi lại tuỳ vào một điều kiện có thể xử lý A, hay
xử lý B, hoặc lặp đi lặp lại một xử lý C nào đó. Ta phải nghiên cứu các cấu trúc
công thức để hiểu.
V.1. Cấu trúc IF THEN ELSE (Nếu thì ngược lại)
Điều kiện là một biến logic đúng sai. Nếu phức tạp bạn nên tạo một biến
logic để đặt vào cấu trúc. Đừng đưa cả biểu thức logic làm điều kiện, vì đó là
kiểu cách lập trình rối, nếu quen sẽ không làm được việc lớn.
IF <Điều kiện> THEN
Công việc A - Là công việc sẽ thực hiện khi điều kiện đúng.
ELSE
Công việc B - Là công việc sẽ thực hiện khi điều kiện sai.
END IF
Tuy nhiên bạn có thể sử dụng hàm IF ( Điều kiện, Giá trị khi điều kiện đúng,
Giá trị khi điều kiện sai) để gán giá trị cho một biến.
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 6
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
Ví dụ: KetQuaThi = IF(DuDiemVaKhongBiLiet, "Đỗ", "Trượt")
Đôi khi bạn có thể lồng vào trong cấu trúc IF dạng ElseIF (Lưu ý viết liền)
Ví dụ:

Gioi = (Tongdiem>=8)
Kha = (TongDiem>=6.5) AND (TongDiem<8)
TB = (TongDiem>=5) AND (TongDiem<6.6)
Kém = (TongDiem<5)
IF GIOI THEN
Thuong = "Xe đạp"
ELSEIF KHA THEN
Thuong="Cặp sách"
ELSEIF TB THEN
Thuong = "Trông nhà"
ELSE
Thuong = "Ăn đòn"
END IF
V.2. Cấu trúc SELECT CASE (Chọn trường hợp)
SELECT CASE <Điều kiện>
CASE Giá trị 11, giá trị 12 , giá trị 1n
Công việc A1 - Là công việc sẽ thực hiện khi điều kiện bằng các giá trị trên
CASE Giá trị 21, giá trị 12 , giá trị 2n
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 7
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
Công việc A2 - Là công việc sẽ thực hiện khi điều kiện bằng các giá
trị trên
CASE Giá trị m1, giá trị m2 , giá trị mn
Công việc Am - Là công việc sẽ thực hiện khi điều kiện bằng các giá trị trên
CASE ELSE
Công việc B - Là công việc sẽ thực hiện khi điều kiện khác tất cả giá trị trên
END SELECT
Trong đó điều kiện là một biến. Các giá trị liệt kê theo từng trường hợp mà
làm các công việc khác nhau.

Nhưng ta có thể không liệt kê ra trong các trường hợp bằng dòng CASE như
trên mà có thể dùng một số từ khoá sau:
CASE IsNull trường hợp điều kiện không có giá trị.
Case Is >100 trường hợp điều kiện là số >100
Case 100 to 200 trường hợp điều kiện là số từ 100 – 200
Bạn có thể sử dụng hàm CHOOSE nếu điều kiện của bạn là các số nguyên
dương để gán giá trị cho biến ví dụ:
GiaiThuong = CHOOSE (KetQua, "Đi Mỹ", "Đi Úc", "Đi Đài Loan")
Tuỳ theo biến kết quả trên phải là các số nguyên dương 1, 2, 3 mà biến
Giải thưởng nhận được giá trị tương ứng.
Bạn cũng có thể sử dụng hàm Switch để bật chuyển cho nhanh theo công
thức sau khi thiết kế hàm.
Function ThuDo (Nuoc as String) as String
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 8
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
Bien= Switch(Bthức 1, Giá trị 1,Biểu thức 2, Giá trị 2 Biểu thức n, Giá trị
n)
Ví dụ:
Function ThuDo (Nuoc as String) as String
KetQua = SWITCH (Nuoc="Mỹ", "Oa sinh tơn", Nuoc="Trung Quốc", "Bắc
Kinh" , Nuoc ="Campuchia")
ThuDo = KetQua
End Function
V.3. Cấu trúc lặp FOR EACH Biencon(Biến Con) IN
BienTongHop (Biến Tổng Hợp)NEXT
FOR EACH Biencon IN BienTongHop
Công việc cho biến con đại diện cho tất cả các phần tử trong biến tổng hợp
NEXT
Biến con là 1 phần tử của biến tổng hợp là một tập hợp. Như ô với vùng, như

ký tự với chuỗi, như nút lệnh với thanh công cụ
Khi lặp đi lặp lại đối với từ phần tử cho đến hết các phần tử ta đưa công việc
vào trong vòng lặp để Visual Basic For Application thực hiện lặp lần lượt tới
từng phần tử thông qua một tên biến đại diện.
Ví dụ:
Function TONGLAPPHUONG(VungDL)
Dim KetQua, OHienTai, OhienTaiLaSo
FOR EACH OHienTai IN VungDL
OHienTaiLaSo = IsNumeric(OHienTai)
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 9
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
IF OHienTaiLaSo Then
KetQua = KetQua + OHienTai3
End If
Next
TONGLAPPHUONG = KetQua
End Function
Thông thường đối với các ô của Excel thường sử dụng các hàm sau để kiểm
tra dạng dữ liệu trong biến.
IsDate (Biến) - Kiểm tra xem biến có phải dạng ngày không.
IsNumeric (Biến) - Kiểm tra xem biến có phải dạng số không.
IsString (Biến) - Kiểm tra xem biến có phải dạng chuỗi không.
IsArray (Biến) - Kiểm tra xem biến có phải dạng mảng không.
IsMissing (Biến) - Kiểm tra xem biến có được truyền từ ngoài vào không.
IsNull (Biến) - Kiểm tra xem biến đã nhập dữ liệu chưa.
Trong vòng lặp có thể sử dụng Exit For để chấm dứt vòng lặp khi ta kiểm tra
điều kiện.
V.4.Cấu trúc lặp FOR NEXT
For Biến_đếm = Giá trị đầu TO Gía trị cuối (STEP)

Công việc cho các trường hợp có liên quan đến biến đếm.
Next
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 10
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
Vòng lặp này ta đã quá quen thuộc trong Visual Basic, nó lặp đi lặp lại các
công việc một số lần xác định trừ khi ta cho nhảy ra khỏi vòng lặp bằng Exit
For. Bạn có thể gặp đầy rẫy ví dụ của nó.
V.5. Vòng lặp không xác định:
Dùng để lặp lại chừng nào (While) điều kiện vẫn đúng, hay lặp lại cho đến
khi (Until) điều kiện đúng. Vòng lặp cũng quá quen thuộc trong Visual Basic.
Do [{While | Until} điều_kiện]
Các công việc A
[Exit Do]
Các công việc B
Loop
Hoặc có thể dùng:
Do Các công việc A
[Exit Do]
Các công việc B
Loop [{While | Until} điều kiện]
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 11
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KẾT LUẬN
Là ngôn ngữ lập trình Visual Basic phát triển trong ứng dụng, VBA đã
giúp phần mềm Excel có khả năng tùy biến cao, vượt ra khỏi giới hạn bảng tính
thông thường. Sử dụng VBA cùng với các công cụ có sẵn trong phần mềm
Excel giúp chúng ta có thể giải quyết được nhiều bài toán phức tạp với khả năng
tự động hóa cao, sản phẩm có thể tương đương với các phần mềm chuyên dụng.

Ngôn ngữ VBA rất gần gũi với VB, trong khi đó VB là ngôn ngữ được sử dụng
phổ biến ở Việt Nam cũng như toàn thế giới vì dễ sử dụng và nguồn sách vở, tài
liệu phong phú. Ngôn ngữ VBA giúp cho việc quản lý tài chính ngân hàng bằng
exel trở nên dễ dàng và tự động hóa hơn.
Do tầm hiểu biết còn hạn hẹp nên trong bài tiểu luận không thể tránh
khỏi những sai sót, chúng em rất mong được sự đánh giá nhận xét và những ý
kiến góp ý của thầy để bài tiểu luận của chúng em được hoàn thiện hơn.
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 12
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
M ỤC L ỤC
LỜI CẢM ƠN 1
LỜI MỞ ĐẦU 2
I. Khái quát về VBA 3
II.1.Chúng ta có thể làm được gì cới VBA: 3
III. Các thuận lợi và bất lợi của VBA: 4
IV. Xây dựng hàm mới trong Excel 5
IV.4.1. Khái niệm về hàm trong 5
IV.4.2. Tại sao phải dùng hàm? 5
V. Xây dựng cấu trúc chương trình 6
GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 13
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
V.1. Cấu trúc IF THEN ELSE (Nếu thì ngược lại) 7
V.2. Cấu trúc SELECT CASE (Chọn trường hợp) 8
V.3. Cấu trúc lặp FOR EACH Biencon(Biến Con) IN BienTongHop (Biến
Tổng Hợp)NEXT 10
V.4.Cấu trúc lặp FOR NEXT 11
V.5. Vòng lặp không xác định: 11
KẾT LUẬN 13

GVHD: Nguyễn Xuân Lô Lớp: DHTN7TH
SVTH : Nguyễn Thị Hậu Trang 14

×