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 để 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 Addin (ứ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.
Trang 1LỜ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 để
Trang 2giả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
Trang 3VBA 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
Trang 4III 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 “)”
Trang 52 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
Trang 6Lấ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
Trang 7Ví 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
Trang 8Cô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
Trang 9Bien= 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ụ:
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)
Trang 10IF 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
Trang 11Vò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]
Trang 12KẾ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
Trang 13M Ụ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