Tìm hiều VBA và Form trong Excel Microsoft Excel là một phần mềm chuyên xử lý bảng tính của hãng phần mềm nổi tiếng Microsoft. Excel thực sự là một công cụ rất mạnh mẽ phục vụ công tác tính toán, lập bảng biểu… Với các bài toán từ đơn giản đến phức tạp, ta đều có thể sử dụng Excel để giải quyết một cách dễ dàng với rất nhiều tính năng sẵn có.
Trang 2DANH SÁCH SINH VIÊN
1.ĐÀO VŨ GIANG THANH
09080311 2.LƯƠNG THỊ ÁI THANH
09080341 3.LÊ ANH SƠN 09084771 4.QUẢN THỊ NHÂM
09221021
Trang 3MỤC LỤC
PHẦN I.: Tổng quan về Microsoft Excel
I Khả năng của Excel
II Giao diện của Excel
PHẦN II: Visual Basic for Applications (VBA)
I.Khái niệm:
1.Visual Basic for Applications (VBA)
Là một sự bổ sung của Microsoft's Visual Basic, được xây dựng trong tất cả các ứng dụng Microsoft Office (bao gồm cả phiên bản cho hệ điều hành Mac OS), một số ứng dụng của Microsoft khác như Microsoft MapPoint và Microsoft Visio - một ứng dụng trước đây của Microsoft; ít nhất đã được bổ sung thành công trong những ứng dụng khác như AutoCAD, WordPerfect và ESRI ArcGIS Nó đã được thay thế và mở rộng trên khả năng của ngôn ngữ macro đặc trưng như WordBasic của Word, và có thể được sử dụng để điều khiển hầu hết tất cả khía cạnh của ứng dụng chủ, kể cả vận dụng nét riêng biệt về giao diện người dùng như các menu và toolbar và làm việc với các hình thái hoặc hộp thoại tùy ý VBA có thể được sử dụng để tạo ra các bộ lọc xuất nhập cho các định dạng tập tin khác nhau như ODF
2.VBA for Excel
II.Tổng quan về VBA
1 Trình tự xây dựng một dự án bằng VBA
2.Cấu trúc của một dự án VBA
3.Môi trường phát triển tích hợp VBA IDE
III.Lập trình trên Microsoft Excel
1.Macro là gì?
2.Tạo Macro sử dụng VBA
3.Thực thi Macro trực tiếp từ VBAIDE
4.Tạo hàm mới bằng VBA
a.Cấu trúc hàm
b.Tạo hàm mới
c.Hàm trả về lỗi
5 Lỗi trong VBAIDE
6.Ví dụ đơn giản với VBA
PHẦN 3: Hộp thoại tuỳ biến – UserForm
I.Khái niệm:
II Tạo mới UserForm
III.Các thuộc tính của UserForm
IV.Các sự kiện trên giao diện
V.Các điều khiển thông dụng
TÀI LIỆU THAM KHẢO
Trang 5PHẦN I.: Tổng quan về Microsoft Excel
I Khả năng của Excel
Microsoft Excel là một phần mềm chuyên xử lý bảng tính của hãng phần mềm nổi tiếng Microsoft Excel thực sự là một công cụ rất mạnh mẽ phục vụ công tác tính toán, lập
bảng biểu… Với các bài toán từ đơn giản đến phức tạp, ta đều có thể sử dụng Excel để giải quyết một cách dễ dàng với rất nhiều tính năng sẵn có:
• Khả năng tổ chức dữ liệu mạnh mẽ với hệ thống các ô, vùng dữ liệu, các bảng tính…;
• Khả năng xử lý dữ liệu như truy vấn, lọc, tính toán… với hệ thống rất phong phú các hàm cơ bản cũng như các hàm chức năng chuyên biệt;
• Khả năng lập báo cáo với cách tổ chức bảng biểu và hệ thống biểu đồ tương đối hoàn
• chỉnh;
• Khả năng in ấn với nhiều lựa chọn khác nhau
Với cách tổ chức giống như bảng tính thông thường, Excel là một phần mềm bảng tính trực quan và rất dễ sử dụng Chính bởi điều này khiến cho Excel là một trong những phầnmềm được sử dụng phổ biến nhất
II Giao diện của Excel
Giao diện là nơi mà người dùng tương tác với chương trình và một giao diện hợp lý là giao diện quen thuộc với người dùng Do chuyên về bảng tính, nên giao diện của Excel (như hình dưới) được thiết kế dựa trên sự mô phỏng của cấu trúc bảng tính thông thường
Trang 6Các thành phần chính trong giao diện của Excel bao gồm:
1 Thanh trình đơn là nơi chứa các lệnh dùng để gọi đến các chức năng của chương
trình.Hệ thống thanh trình đơn được truy cập bằng chuột, và trong một số lệnh phổ biến còn có thể sử dụng tổ hợp phím (ví dụ để lưu bảng tính có thể bấm phím Ctrl+S)
2 Thanh công cụ có rất nhiều thanh công cụ khác nhau, mỗi thanh công cụ chứa các nút
lệnh trực quan hoặc các lựa chọn dùng để thực hiện một nhóm chức năng nào đó trong chương trình Hay nói cách khác, một lệnh có thể được gọi từ thanh công cụ hoặc từ thanh trình đơn
3 Thanh công thức bao gồm ô chứa địa chỉ của ô hiện hành và ô chứa nội dung của ô
hiện hành Tại đây ta có thể xem được công thức trong một ô nào đó trong khi ô đó vẫn chứa kết quả của công thức đó
4 Workbook là một tệp tài liệu của Excel Mỗi Workbook có thể chứa nhiều bảng tính
(Worksheet) và các dữ liệu mở rộng khác Tại mỗi thời điểm chỉ có một worksheet hiệnhành và ta chỉ có thể làm việc với worksheet này
5 Worksheet là loại tài liệu chính trong tệp tài liệu của Excel, mỗi worksheet chứa các ô
Trang 7Là một sự bổ sung của Microsoft'sVisual Basic, được xây dựng trong tất cả các ứng dụng
Microsoft Office (bao gồm cả phiên bản cho hệ điều hành Mac OS), một số ứng dụng củaMicrosoft khác như Microsoft MapPoint và Microsoft Visio - một ứng dụng trước đây của Microsoft; ít nhất đã được bổ sung thành công trong những ứng dụng khác như
AutoCAD, WordPerfect và ESRIArcGIS Nó đã được thay thế và mở rộng trên khả năng của ngôn ngữ macro đặc trưng như WordBasic của Word, và có thể được sử dụng để điềukhiển hầu hết tất cả khía cạnh của ứng dụng chủ, kể cả vận dụng nét riêng biệt về giao diện người dùng như các menu và toolbar và làm việc với các hình thái hoặc hộp thoại tùy ý VBA có thể được sử dụng để tạo ra các bộ lọc xuất nhập cho các định dạng tập tin khác nhau như ODF
Như tên gọi của mình, VBA khá gần gũi với Visual Basic, nhưng nó chỉ có thể chạy trong ứng dụng chủ chứ không phải 1 chương trình độc lập Nó có thể được dùng để điều khiển 1 ứng dụng từ 1 OLE tự động (ví dụ, tự động tạo 1 bản báo cáo bằng Word từ dữ liệu trong Excel)
VBA có nhiều khả năng và cực kì mềm dẻo nhưng nó có một số hạn chế quan trọng, bao gồm hỗ trợ hạn chế cho các hàm gọi lại Nó có khả năng sử dụng (nhưng không tạo ra) các thư viện động, và các phân bản sau hỗ trợ cho các mô-đun lớp (class modules)
Microsoft có kế hoạch thay thế VBA bằng Visual Studio Tools for Applications
(VSTA), một bộ công cụ thay đổi ứng dụng có nền tảng Net Tuy nhiên những kĩ thuật
này vẫn đang được nghiên cứu, vì vậy ít nhất bộ Office 2007 vẫn sẽ dùng công nghệ VBA
2.VBA for Excel
Microsoft Excel là một công cụ mạnh để phân tích và trình bày thông tin Một trongnhững thế mạnh của Excel là ngôn ngữ macro Kể từ khi ra đời, Excel luôn là chươngtrình bảng tính có cài ngôn ngữ macro bao quát và linh hoạt nhất trong các phần mềmbảng tính
Để viết macros trong Excel, bạn thật sự cần học hai công cụ khác biệt Trước hết, bạn cầnhọc cách làm việc với Visual Basic Mọi kiến thức bạn học về Visual Basic không những
áp dụng được trong Excel mà còn cho các phần mềm Microsoft khác Thứ hai bạn họccách sử dụng Excel Càng nắm vững sử dụng bảng tính Excel, bạn càng xây dựng hiệuquả các macros
II.Tổng quan về VBA
1 Trình tự xây dựng một dự án bằng VBA
• Xác định rõ nhu cầu xây dựng chương trình
• Xác định rõ mục tiêu mà chương trình cần đạt được
• 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ựng chươngtrình
• Thiết kế hệ thống cho chương trình (hay dự án)
Trang 8• Viết mã lệnh (lập trình)
• Kiểm thử chương trình: là công đoạn hoàn thiện và chuẩn bị đưa chương trình vào
sử dụng
• Đóng gói, đưa chương trình vào sử dụng
• Tiếp nhận các góp ý, phản hồi của người dùng để bổ sung hay hoàn thiện những khiếm khuyết của chương trình mà trong quá trình thiết kế hệ thống hay kiểm thử
đã bỏ qua hoặc chưa phát hiện được
• Nâng cấp chương trình
2.Cấu trúc của một dự án VBA
• Mô-đun chuẩn (Module): là nơi chứa các mã lệnh khai báo, các chương trình con (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ức năng mà người thiết kế hệ thống đặt ra
• Mô-đun lớp (Class Module): là nơi chứa định nghĩa cho các lớp của dự án
• Userform: là 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 người ta sử dụng Userform để nhập số liệu, xuất kết quả của chương trình Trong một số dự án, nếu việc nhập số liệu và biểu diễn kết quả được thực hiện trực tiếp trên ứng dụng nền, thì có thể không cần sử dụng Userform
Cấu trúc của dự án thể hiện trên VBA IDE
3.Môi trường phát triển tích hợp VBA IDE
Trong Excel, 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 (viết tắt là 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 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: Tools / Macro/Visual Basic Editor
Trang 91 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ới VBA IDE
2 Cửa sổ dự án (Project Explorer Window): liệt kê dưới dạng cây phân cấp các dự á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ửa sổ do ngườidù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 menu Insert của VBA IDE Ví dụ muốn thêm một mô-đun chuẩn vào trong dự án, chọn Insert =>
Module
3 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ùng có thể hiệu chỉnh mã lệnh, tạo ra mã lệnh mới trong cửa sổ mã lệnh
4 Cửa sổ tra cứu đối tượng (Object Browser Window): hiển thị các lớp, phương thứ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
Ta 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 mà ta vừa tạo racũng như các đối tượng trong các chương trình khác
5 Cửa sổ đối tượng trực quan (Visual Object Window): khi người dùng tạo các đối tượngtrự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ển một cách dễdàng và thuận tiện
6 Hộp công cụ chứa điều khiển (Tool Box): chứa các thanh công cụ giúp người dùng có thể chèn các điều khiển vào cửa sổ người dùng (UserForm)
7 Cửa sổ thuộc tính (Properties Window): cửa sổ này liệt kê tất cả các thuộc tính của đốitượng, qua đó người dùng có thể tham khảo và thay đổi các thuộc tính khi cần như màuchữ, tên đối tượng…
III.Lập trình trên Microsoft Excel
Để khởi động VBAIDE, từ cửa sổ chính của Excel, chọn trình đơn Tools/ Macro/Visual
Trang 10Basic Editor, hoặc có thể sử dụng tổ hợp phím ALT+F11.
1.Macro là gì?
Khi làm việc trong Excel, đôi lúc gặp phải những tình huống mà người sử dụng phải lặp
đi lặp lại rất nhiều thao tác để thực hiện các nhiệm vụ tương tự nhau, ví dụ như thường xuyên phải định dạng dữ liệu thành một kiểu bảng giống nhau Điều này rất dễ dẫn đến sựnhàm chán trong công việc Do đó, khi thiết kế Excel, Microsoft đã đưa ra khái niệm Macro để có thể gói gọn tất cả các thao tác ấy vào một thao tác duy nhất
Macro là tập hợp các lệnh và hàm được lưu trữ trong một mô-đun mã lệnh của VBA nhằm thực hiện một nhiệm vụ nào đó Macro có thể được tạo bằng cách:
• Excel sẽ tự ghi lại thao tác của người dùng khi làm việc trên nó (Macro dạng kịchbản) và khi gọi Macro này, Excel sẽ tự động lặp lại toàn bộ các thao tác trên;
• Người dùng tự viết các đoạn mã lệnh để thực hiện các thao tác tương ứng
Sau khi được tạo ra, mỗi khi thực thi Macro, tất cả các thao tác đã được lưu trong Macro sẽ được thực hiện tự động
Về thực chất, Macro là một chương trình con dạng thủ tục (Sub) với từ khoá Public Tuy nhiên, khác với các thủ tục khác, Macro là thủ tục không có tham số Chính vì vậy, tất cả các thủ tục với từ khoá Public và không có tham số đều được xem là Macro và sẽ được hiển thị trong trình quản lý Macro của Excel (cách gọi: chọn trình đơn Tools / Macro
/Macros hoặc bấm Alt+F8).
2.Tạo Macro sử dụng VBA
Trong thực tế, Macro kịch bản không thể đáp ứng được mọi nhu cầu, thông thường nó chỉđáp ứng tốt những yêu cầu về thao tác cơ bản khi tương tác với Excel Để khắc phục nhược điểm này, người dùng có thể viết các đoạn mã lệnh riêng với VBA để tạo ra các Macro có khả năng đáp ứng được nhu cầu của mình Như vậy, ngoài cách tạo Macro theo kịch bản, còn có thể tạo Macro bằng cách lập trình trong VBAIDE
Ví dụ sau minh hoạ cách thức tạo một Macro sử dụng VBA
Mục đich của Macro là định dạng lại phông chữ cho vùng ô đang được lựa chọn trong bảng tính: thay đổi tên phông chữ thành “Time News Roman”, kiểu chữ thành “Italic”, kích cỡ chữ “11”
Tạo Macro sử dụng VBAIDE
1 Trong màn hình chính của Excel, chọn trình đơn Tools/Macro/Visual Basic Editor.
2 Trong màn hình của VBAIDE vừa được hiển thị, chọn trình đơn InsertModule.
Trang 123.Thực thi Macro trực tiếp từ VBAIDE
Cách thực thi Macro trực tiếp từ VBAIDE rất thích hợp khi người sử dụng muốn thử nghiệm ngay Macro trong quá trình xây dựng nó
Để thực thi Macro nào đó trong VBAIDE, cần thực hiện như sau:
1 Trong cửa sổ mã lệnh của VBAIDE, đặt con trỏ vào giữa khối Sub … End Sub.
2 Nhấn phím F5 hoặc chọn biểu tượng trên thanh công cụ
Thực thi Macro trực tiếp từ VBAIDE
4.Tạo hàm mới bằng VBA
Excel cho phép xây dựng các hàm mới bằng VBA, và đặc biệt, việc sử dụng các hàm mớinày không khác gì so với việc sử dụng các hàm có sẵn của Excel Hàm mới luôn mang đặc tính:
• Trả về một giá trị nào đó, tương tự như hàm có sẵn trong Excel;
Trang 13• Hàm mới có thể sử dụng như một chương trình con trong VBA, nghĩa là nó vừa
có thể sử dụng trong bảng tính (trong các ô), đồng thời có thể sử dụng trong các chương trình viết bằng VBA
• Private: (tuỳ chọn) là từ khoá biểu thị phạm vi của hàm, hàm chỉ có thể được sử dụng bên trong mô-đun có chứa hàm đó Khi có từ khoá Private, tên hàm sẽ khôngđược hiển thị trong danh sách hàm của Excel, nhưng người sử dụng vẫn có thể dùng hàm này trong bảng tính một cách bình thường
CHÚ Ý Nếu không khai báo phạm vi cho hàm (từ khoá Public/Private), thì mặc định,
hàm sẽ có phạm vi là Public
• Function: (bắt buộc) là từ khoá báo hiệu bắt đầu một hàm
• Tên_hàm: (bắt buộc) là tên của hàm, cách đặt tên hàm tương tự như cách đặt tên của biến
Tên_hàm sẽ được sử dụng như là biến trong toàn bộ hàm, khi hàm kết thúc giá trị trả về của hàm chính là giá trị đã gán cho biến Tên_hàm cuối cùng
• Danh_sách_tham_số: (tuỳ chọn) là danh sách các tham số đầu vào của hàm Các tham số được phân cách với nhau bằng dấu phẩy
• Kiểu_dữ_liệu: (tuỳ chọn) quy định kiểu giá trị trả về của hàm Nếu không quy địnhkiểu dữ liệu, hàm sẽ có kiểu dữ liệu mặc định là Variant
• Exit Function: (tuỳ chọn) là câu lệnh dùng để kết thúc hàm ngay lập tức (cho dù phía sau câu lệnh này vẫn còn các khối lệnh khác)
• End Function: (bắt buộc) là từ khoá báo hiệu kết thúc một hàm
b.Tạo hàm mới
Ví dụ
Hàm tính diện tích hình chữ nhật Hàm này có tên là Dien_tich, với hai tham số đầu vào là chiều rộng và chiều cao Kiểu dữ liệu của các tham số là kiểu số thực và giá trị trả về của hàm cũng là kiểu số thực
Để tạo một hàm mới, thực hiện theo các bước sau:
1 Khởi động VBAIDE Trong trình đơn Tools, chọn mục Macro/Visual Basic Editor;
Trang 142 Trong trình đơn Insert, chọn mục Module để tạo một mô-đun mới, nơi sẽ chứa hàm do
người dùng định nghĩa
3 Trong trình đơn Insert, chọn mục Procedure… để hiển thị hộp thoại Add Procedure Sau đó điền tên hàm vào mục Name, chọn kiểu chương trình con là Function và phạm vi
là Public Cuối cùng chọn OK;
4 Chương trình sẽ tự động phát sinh đoạn mã lệnh như sau:
Pu b l i c Fu n c t i o n D i e n _ Ti c h ( )
E n d Fu n c t i o n
5 Thay đoạn mã lệnh trên bằng đoạn mã lệnh thích hợp
Public Function Dien_Tich(Rong As Double, Cao As Double) As Double
‘Ham tinh dien tich hinh chu nhat
Dien_Tich = Rong * Cao
End Function
6 Trong trình đơn File, chọn mục Close and Return to Microsoft Excel để quay trở về
màn hình chính của Excel
7 Lúc này, hàm mà ta vừa xây dựng, có tên là Dien_Tich, đã có thể được sử dụng bình
thường như các hàm khác của Excel
c.Hàm trả về lỗi
một số giá trị lỗi cũng như các hằng số tương ứng trong VBA