1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiều VBA và AddIn trong Excel viết hàm người dùng

35 1,8K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 859 KB

Nội dung

Tìm hiều VBA và AddIn trong Excel viết hàm người dùng 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 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM

- -BÀI TIỂU LUẬN

Đề tài 11 :

Nhóm sinh viên thực hiện :

1 Nguyễn Ngọc Hoa Anh (09202801)

Trang 2

Tp Hồ Chí Minh, tháng 06/2010

1 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

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)

Ta không nên hiểu lầm VBA và VB (VB là viết tắt của cụm từ Visual Basic) VB là một ngôn ngữ lập trình giúp bạn tạo ra các chương trình ứng dụng có thể thực hiện độc lập Mặc dù VBA và VB có nhiều cái chung, nhưng chúng hoàn toàn là hai ngôn ngữ khác nhau

Ví dụ đầu tiên với VBA :

Ví dụ này được trình bày với mục đích giúp người dùng làm quen với VBA IDE trong Excel

Kết quả của ví dụ là hiển thị nội dung ô A1 trong Sheet1 của bảng tính lên tiêu đề của một hộp thoại người dùng (UserForm)

Trình tự thực hiện như sau:

1 Mở ứng dụng Excel, nhấn tổ hợp phím ALT + F11 để vào VBA IDE.

2 Trong VBA IDE, chọn menu Insert → UserForm để thêm một hộp thoại người dùng vào trong dự án

Trang 3

3 Chọn tiếp menu Insert →Module để thêm một mô-đun chuẩn vào trong dự án.

4 Chọn Module1 và soạn thảo mã lệnh trong mô-đun đó như sau:

Public Sub FirstPro()

UserForm1.Show

UserForm1.Caption = Sheets("Sheet1").Range("A1").Value

End Sub

Sau đó quay trở lại Excel, và chạy chương trình theo trình tự:

1 Gõ vào ô A1 của Sheet1 nội dung “Hello, World”.

2 Chọn menu Tools→ Macro → Macros (hoặc nhấn tổ hợp phím ALT+ F8)

3 Trong hộp thoại Macro, chọn macro có tên FirstPro rồi nhấn nút Run

Kết quả chương trình sẽ hiển thị như hình dưới đây:

Trang 4

1.1 Tìm các tập tin VBA trong file

Visual Basic for Application files VBA được sử dụng để lập trình ứng dụng nhỏ cho phần mềm Microsoft như Excel Các tập tin được lưu trên máy tính của người dùng và được sử dụng bởi Excel để chạy mã, để thao tác và tính toán các giá trị VBA tập tin là tập tin thực thi do đó một số người dùng chọn xoá chúng

từ một ổ đĩa cứng

Bạn có thể tìm thấy tất cả các file VBA trên đĩa cứng bằng cách sử dụng chức năng tìm kiếm Windows tìm thấy trên menu Windows nút Start Chạy

Hộp thoại Macro

Kết quả trên excel

Trang 5

chức năng tìm kiếm trong Windows Vista bạn có thể xác định tất cả các vị trí của các tập tin VBA trên hệ thống của bạn:

 Bước1 : Nhấp vào nút Bắt đầu của Windows và chọn Search Từ danh

sách các tùy chọn chọn Đối với tập tin hoặc thư mục Điều này sẽ mở ra một cửa sổ mới nơi bạn nhập các thông tin tập VBA

 Bước2 : Nhấp vào Advanced nhãn để mở các tùy chọn tìm kiếm khác

Điều này sẽ mở ra một danh sách các tùy chọn mà bạn có thể chỉ định ổ đĩa để thu hẹp tìm kiếm 3

 Bước 3 : Gõ .VBA vào ô tìm kiếm Thẻ biểu tượng cho biết rằng

Windows nên xem xét cho bất cứ tên tập tin với phần mở rộng là VBA

 Bước 4 : Chọn ổ đĩa trong thả xuống hộp có nhãn Vị trí Microsoft đã là

một lựa chọn để tìm kiếm tất cả các ổ địa phương trong đó bao gồm C Drive

 Bước 5 : Nhấn nút Tìm kiếm Có thể mất vài phút cho Windows để tìm

kiếm toàn bộ ổ đĩa cứng cho mỗi tập tin VBA Sau khi đã hoàn tất Windows liệt kê các vị trí của mỗi tập tin VBA rằng có vị trí trên các file

1.2 Các ứng dụng của VBA

Nếu nắm được những hiểu biết cơ bản của VBA, nó có thể có rất nhiều ứng dụng trong công việc hằng ngày, giúp ta giải quyết công việc một cách nhanh chóng và dễ dàng hơn Ví dụ như :

• 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á

• Lên kế hoạch

• Phân tích dữ liệu

• Phát triển các biểu đồ từ nguồn dữ liệu lưu trữ

•Dùng VBA trong Excel để tạo và sửa chữa PivotTable; và còn rất nhiều tiện

Trang 6

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.

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.

Ví dụ : Dùng VBA trong Excel để tạo và sửa chữa PivotTable

Chức năng PivotTable là chức năng mạnh của Excel, nó giúp bạn tổng kết

số liệu nhanh một cách kinh ngạc Chức năng này đầu tiên xuất hiện trong Excel 5

Giả sử ở Sheet1, tôi có khối dữ liệu cần phân tích như Hình 1 Khối dữ

liệu này gồm các trường: SalesRep (đại diện bán hàng), Region (Vùng), Month (Tháng), Sales (doanh số bán)

Trước khi tạo bảng PivotTable như Hình 2, chọn Record New Macro như

Hình 3, để xem đoạn mã được ghi lại như thế nào.

Trang 7

Sau đó vào màn hình VBA bằng cách nhấn tổ hợp phím Alt + F11 Vào

Module1, thấy được đoạn mã như sau:

Trang 8

ActiveSheet.PivotTables("PivotTable1").PivotFields("Sales").Orientation = _xlDataField

Trang 9

Để khảo sát đoạn mã trên cần phải biết một số đối tượng liên quan Tất cả các đối tượng này đều được giải thích trên Online Help.

PivotCaches

là tập hợp các đối tượng PivotCache trong đối tượng Workbook

PivotTables

là tập hợp các đối tượng PivotTable trong đối tượng Workbook

PivotTableFields là tập hợp các trường trong đối

tượng PivotTable

Create PivotTable

một phương thức của đối tượng PivotCache để tạo một

PivotTable sử dụng dữ liệu trong một PivotCache

Ta có thể viết lại thủ tục trên bằng thủ tục CreatePivotTable (chú ý nhập thủ

tục này vào module1) sau đây, có thể nó hơi dài nhưng sẽ dễ hiểu hơn, và có

thể chạy chương trình bất cứ đâu bằng cách nhấn tổ hợp phím Alt + F8, sau đó chọn thủ tục CreatePivotTable và chọn Run như Hình 4.

Trang 10

Sub CreatePivotTable()

Dim PTCache As PivotCache

Dim PT As PivotTable

Application.ScreenUpdating = False

Xoa PivotSheet neu no ton tai

On Error Resume Next

Application.DisplayAlerts = False

Sheets("PivotSheet").Delete

On Error GoTo 0

Tao Pivot Cache

Set PTCache = ActiveWorkbook.PivotCaches.Add _

Trang 11

Tao Pivot Table tu Cache

Trang 12

Khi chạy xong thủ tục trên, ta sẽ được một PivotTable ở Sheet2, trong

trường hợp này sheet có tên là PivotSheet (Hình 5)

Nếu chú ý, bạn sẽ thấy sự khác biệt của 2 đoạn mã trên Trong Macro1 khi sử dụng phương thức Add để tạo PivotCache thì SourceData là "Sheet1!

R1C1:R13C4" còn trong đoạn mã tôi viết là

Sheets("Sheet1").Range("A1").CurrentRegion.Address Ở đây tôi dùng thuộc

tính Current Region, có nghĩa là dữ liệu chúng ta sử dụng dựa trên vùng hiện tại xung quanh ô A1 Điều này để chắc chắn thủ tục CreatePivotTable vẫn tiếp tục

làm việc tốt khi chúng ta thêm vào dữ liệu

Bây giờ giả sử tôi có thêm trường Target (chỉ tiêu) trong khối dữ liệu, và trong PivotTable tôi sẽ đưa thêm trường target vào đồng thời cũng thêm trường tính toán Variance Trường này (Variance) sẽ bằng Sales - Target Khối dữ liệu mới của tôi như hình 6.

Đoạn mã trong thủ tục CreatePivotTable trên sẽ được thêm như sau (tôi

chỉ thêm trong đoạn With PT End With) :

Trang 13

Them truong tinh toan

.CalculatedFields.Add "Variance", "=Sales - Target"

.PivotFields("Variance").Orientation = xlDataField

Thay doi caption

.PivotFields("Sum of Sales").Caption = "Sales ($) "

.PivotFields("Sum of Target").Caption = "Target ($) "

.PivotFields("Sum of Variance").Caption = "Variance ($) "

End With

Trang 14

Sau khi chạy lại thủ tục trên ta sẽ được như hình 7.

Giả sử bây giờ dữ liệu gồm 6 tháng (hình 8), muốn đưa thêm cột tổng theo

từng 3 tháng phải sửa lại đoạn mã như sau:

Trang 15

.CalculatedFields.Add "Variance", "=Sales - Target"

"= thang 4 + thang 5 + thang 6"

Di chuyen cac muc tinh toan

.PivotFields("Month").PivotItems("Q1").Position = 4

.PivotFields("Month").PivotItems("Q2").Position = 8

Thay doi caption

.PivotFields("Sum of Sales").Caption = "Sales ($) "

.PivotFields("Sum of Target").Caption = "Target ($) "

.PivotFields("Sum of Variance").Caption = "Variance ($) "

Trang 16

Sau khi chạy lại thủ tục CreatePivotTable tôi sẽ được kết quả như Hình 9.

Nếu chúng ta biết sử dụng VBA thì công việc phân tích dữ liệu sẽ trở nên đơn giản hơn Ngoài ra, ta cũng có thể tạo một PivotTable từ nguồn dữ liệu bên ngoài như Access chẳng hạn Để lập trình PivotTable được tốt, các bạn nên đọc

Trang 17

phần Online Help của Excel về các đối tượng, phương thức, thuộc tính đã đề cập ở trên.

1.3 Các thuận lợi và bất lợi của VBA

1.3.1 Thuậ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 ngồi bấm máy tính lộc cộc

* 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ể

* 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".

1.4 Xây dựng hàm mới trong Excel

1.4.1 Khái niệm về hàm trong Excel

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

Trang 18

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 “)”

2 Tên hàm : Nhấn tổ hợp phím SHIFT+F3 để hiển thị danh sách tất cả

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

1.4.2 Tạo hàm mới bằng VBA

1.4.2.1 Tại sao phải dùng hàm ?

Trong quá trình tính toán với các bảng tính, người ta thấy rằng luôn tồn tại một nhu cầu : giá trị trong một ô nào đó sẽ được tính dựa vào hai yếu tố:

 Tính theo một hoặc nhiều công thức hoặc theo một trình tự logic nào đó

 Việc tính toán cần phải dựa trên những thông số bên ngoài khác

Nếu đối chiếu hai yếu tố trên với cấu trúc của một hàm (ở mục trước) ta có thể thấy rằng nhu cầu trên chỉ có thể được giải quyết một cách thỏa đáng với việc sử dụng hàm Hơn nữa, khi sử dụng hàm, việc sử dụng lặp cho nhiều ô hoặc hiệu chỉnh nội dung tính toán sau này đều rất thuận tiện so với việc không dùng hàm (tính trực tiếp trong ô) Chính bởi ưu điểm này mà hàng loạt hàm đã được Excel xây dựng sẵn và phân loại theo nhóm để tạo thuận tiện cho người dùng

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

Trang 19

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

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ế, xây dựng một hàm mới dùng để tra bảng và nội suy 2 chiều 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

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ới nà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

 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

Trang 20

Trong đó:

 Public : (tuỳ chọn) là từ khoá biểu thị phạm vi của hàm, hàm có thể

được sử dụng ở bất kỳ đâu trong tất cả các dự án VBA hiện có Khi có từ khoá Public, tên hàm sẽ được hiển thị trong danh sách hàm của Excel

 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

 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 định kiể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.

1.4.2.3.Tạo hàm mới

Để 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 MacroVisual

Basic Editor.

2 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.

Trang 21

Hình1 : Hộp thoại Add Procedure.

4 Chương trình sẽ tự động phát sinh đoạn mã lệnh như sau:

Public Function Dien_Tich()End Function

5 Thay đoạn mã lệnh trên bằng đoạn mã lệnh sau:

Public Function Dien_Tich(Rong As Double, Cao As Double) As Double

‘Hàm tính diện tích hình chữ nhật

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

Ngày đăng: 15/07/2014, 00:27

HÌNH ẢNH LIÊN QUAN

Hình sau : - Tìm hiều VBA và AddIn trong Excel viết hàm người dùng
Hình sau (Trang 28)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w