1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Lập trình VBA cho Excel chi tiết

61 791 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 61
Dung lượng 10,24 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Để mở trình soạn thảo VBA Visual Basic Editor, viết tắt VBE, chúng ta sử dụng thẻ Developer, rồi bấm nút Visual Basic như hình minh hoạ hoặc bấm tổ hợp phím tắt ALT + F11 Cửa sổ soạn thả

Trang 2

Cảm ơn các bạn đã quyết định chọn cuốn sách này Có thể vì tò mò, có thể

vì muốn thử học 1 kiến thức mới, dù bạn đang ở trong trạng thái nào thì cuốn sách này sẽ mang lại cho các bạn một sự bắt đầu nhẹ nhàng nhất với ngôn ngữ lập trình VBA được sử dụng rộng rãi trong các phần mềm tin học văn phòng, đặc biệt là Excel Qua cuốn sách này, bạn có thể hiểu được cơ bản VBA là gì, thậm chí còn có thể bắt đầu áp dụng những kiến thức trong sách để phần nào nâng cao năng suất làm việc của mình

Nếu bạn muốn tiếp tục tìm hiểu sâu hơn, áp dụng được nhiều hơn, tiết kiệm nhiều thời gian hơn, học 1 chương trình đã được các tổ chức như VPBank, VietinBank, KPMG tin tưởng và sử dụng Hãy đăng ký khoá học VBA101 - Lập trình VBA cơ bản cho người mới bắt đầu của Thanh tại địa chỉ:

Trang 4

1 Excel Macros là gì? 01

2 VBA là gì? 01

3 Làm thế nào để bắt đầu? 01

4 Sử dụng chức năng Macro Recorder 05

5 Ứng dụng của VBA / Macros 13

6 Làm việc với đối tượng Workbook 14

7 Làm việc với đối tượng Worksheet 19

8 Làm việc với đối tượng Range 23

9 Thuộc tính Cells của đối tượng Worksheet 30

10 Biến số và kiểu dữ liệu 31

11 Cấu trúc IF trong VBA 35

12 Cấu trúc WITH … END WITH 39

13 Vòng lặp trong VBA 40

14 Lọc dữ liệu từ 1 Sheet ra nhiều sheets 48

15 Tổng hợp dữ liệu nhiều sheets vào 1 sheet 51

16 Làm việc với mảng trong VBA 52

17 Sub và Function trong Excel 5418.Hàm người dùng - UDF (User defined function) 55

Trang 5

Excel Macros là những chương trình nhỏ giúp lặp đi lặp lại những thao tác

từ đơn giản đến phức tạp một cách tự động trong Excel Ngoài Excel Macros, chúng ta còn có thể gặp Word Macro, PowerPoint Macro, Outlook Macro …

VBA viết tắt của Visual Basic for Applications, là một ngôn ngữ lập trình đi kèm với một số phần mềm của Microsoft, trong đó có Excel, Word, PowerPoint, Outlook, …

Để bắt đầu với Excel Macros nói riêng hay Macros nói chung và ngôn ngữ lập trình VBA, chúng ta sẽ đi mở trình soạn thảo VBA Để mở trình soạn thảo VBA, các bạn hãy theo từng bước sau đây

1 Trong Excel, bấm chuột phải vào Ribbon và chọn mục Customize the

Ribbon …

01

Trang 6

Trong Main Tabs, tích vào lựa chọn Developer rồi nhấn OK

3 Kết quả của bước số 2, thẻ Developer đã được hiển thị trên Ribbon của Excel

Trang 7

select * from [EXCEL]

4 Để chạy được file Excel có chứa Macros hoặc code VBA, tuỳ chỉnh về

Macro Security cần được thiết lập như sau Trong thẻ Developer, bấm nút Macro Security

Trong cửa sổ Trust Center, thiết lập các lựa chọn như hình vẽ

03

Trang 8

Macros hoặc code VBA với phần mở rộng là XLSM Để thực hiện việc này,

trong Excel, chọn thẻ File > Save as … hoặc sử dụng phím tắt F12 trên bàn

phím

Đến bước này, file Excel đã sẵn sàng cho việc sử dụng với Macros hoặc VBA

Trang 9

select * from [EXCEL]

4 Sử dụng chức năng Macro Recorder

Chức năng Macro Recorder sẽ giúp chúng ta rất nhiều trong việc học VBA

Để ghi 1 macro đầu tiên: chọn thẻ Developer > bấm nút Record Macro

Trang 10

4 Sử dụng chức năng Macro Recorder

Chức năng Macro Recorder sẽ giúp chúng ta rất nhiều trong việc học VBA

Để ghi 1 macro đầu tiên: chọn thẻ Developer > bấm nút Record Macro

Trong hộp thoại Record Macro, chúng ta có thể đặt tên cho Macro hoặc gán phím tắt và viết miêu tả cho Macro đó Ở đây, để tiếp tục ta bấm nút OK

Trang 11

select * from [EXCEL]

Trong quá trình ghi code Macro, thao tác của bạn ở cửa sổ bên tay trái sẽ được chức năng Record Macro ghi lại

trong Macro1() bên tay phải

07

Trang 12

Trong quá trình học VBA bằng cách ghi Macro, các bạn nên để cửa sổ Excel

và cửa số soạn thảo VBA song song, khi đó bạn có thể nhìn thấy thao tác nào trên cửa sổ Excel sẽ được ghi lại bởi Macro ra sao

Sau khi kết thúc việc ghi Macro, chúng ta cần bấm vào thẻ Developer 1 lần nữa và bấm nút Stop Recording

Trang 13

select * from [EXCEL]

Viết những dòng code đầu tiên

1 Để viết hoặc chỉnh sửa code VBA trong Excel, trình soạn thảo VBA trong Excel sẽ hỗ trợ việc này Để mở trình soạn thảo VBA (Visual Basic Editor, viết tắt VBE), chúng ta sử dụng thẻ Developer, rồi bấm nút Visual Basic như hình minh hoạ hoặc bấm tổ hợp phím tắt ALT + F11

Cửa sổ soạn thảo VBA trông sẽ như thế này

Đây là cửa sổ Immediate (Cách mở: Menu View > Immediate Window)Cửa sổ Immediate Window là nơi chúng ta có thể thử code VBA hoặc hiển thị nội dung của lệnh

Debug.Print

Cửa sổ Locals, sẽ giúp bạn theo dõi các đối tượng

và biến số trong quá trình chạy code VBA

Cách mở: Menu View > LocalsCửa sổ Project thể hiện thông tin liên quan đến các đối tượng bảng tính, files, form

Cách mở: Menu View > Project ExplorerCửa sổ Properties thể hiện các thuộc tính của đối tượng đang được chọn Chúng ta có thể thay đổi thuộc tính của các đối tượng trực tiếp trong cửa sổ này

Cách mở: Menu View > Properties Window

09

Khoá học VBA cơ bản cho người mới bắt đầu Click link giảm giá 40%: http://bit.ly/2eEOWsZ

Trang 14

menu Insert > Module Tổ hợp phím tắt để tạo 1 Module mới là ALT + I + M

3 Module mới được tạo ra sẽ có tên mặc định là Module1 Tên của Module này có thể được đổi trong cửa sổ Properties > thuộc tính (Name)

GIẢM NGAY 30%

VBA CHO NGƯỜI MỚI BẮT ĐẦU Khoá học

http://bit.ly/2eEOWsZ

Trang 15

select * from [EXCEL]

4 Click đúp vào Module mới tạo ra, chúng ta có thể soạn thảo đoạn code VBA đầu tiên

5 Để chạy đoạn code này, chúng ta có thể click chuột trái vào bên trong Sub macroDauTien(), có thể là ngay trước chữ “MsgBox” rồi chọn

menu Run > Run Sub/UserForm

11

Khoá học VBA cơ bản cho người mới bắt đầu Click link giảm giá 40%: http://bit.ly/2eEOWsZ

Trang 16

Đến bước này, nếu bạn nhận được thông báo như vậy, nghĩa là môi trường lập trình VBA của bạn đã được thiết lập thành công và bạn có thể bắt đầu thực hiện việc lập trình VBA hoặc tạo ra những Macro của riêng mình Ở lần tới, khi bạn mở 1 file Excel có chứa Macro hoặc code VBA, bạn sẽ nhận được

thông báo như sau, bạn chỉ cần bấm nút Enable Content là có thể sử dụng

được Macro đã lưu trong file rồi

Trang 17

select * from [EXCEL]

5 Ứng dụng của VBA / Macros

XLS XLS XLS XLS

1 Tách 1 file Excel ra nhiều files Excel

2 Tách 1 sheet Excel ra nhiều sheets Excel

3 Gửi thư hàng loạt qua Outlook tự động

4 Tạo báo cáo tự động, lấy số liệu, định dạng số liệu

5 Tạo nhiều files Word lấy thông tin từ 1 file Excel

6 Tạo nhiều files PowerPoint lấy thông từ 1 file Excel

7 Tổng hợp dữ liệu từ nhiều files Excel vào 1 file Excel

8 Tổng hợp dữ liệu từ nhiều sheets Excel vào 1 file Excel

9 Xử lý dữ liệu từ nhiều nguồn, nhiều định dạng 1 cách tự động

Trang 18

6 Làm việc với đối tượng Workbook

Workbook hay file Excel, tệp Excel là đối tượng đầu tiên bạn quan tâm tới

và được tiếp xúc khi lập trình VBA, trong chương này, chúng ta sẽ đi làm việc với đối tượng Workbook và tìm hiểu 1 số thuộc tính cơ bản của đối tượng này Trong sách này ở phần phía sau, các bạn sẽ dựa vào kiến thức chương này để có thể tách gộp được nhiều files Excel phục vụ cho mục đích của mình Vậy nên, hãy chú ý vào những thuộc tính mà đối tượng Workbook

Trang 19

select * from [EXCEL]

6 Làm việc với đối tượng Workbook

Để bắt đầu làm việc với đối tượng Workbook trong Excel, bạn có thể thử những dòng code sau đây trong 1 thủ tục (Sub) được lưu ở trong 1 Module

Truy cập một số thuộc tính cơ bản của Workbook

Ý nghĩa của từng câu lệnh như thế nào thì có lẽ các bạn cũng đã đoán được:

↳ Câu lệnh này ghi đường dẫn đầy đủ đến Workbook chứa macro vào vùng A1

Trang 20

Mở Workbook

Đóng Workbook

Thủ tục sau đây sẽ mở 1 Workbook biết đường dẫn tới Workbook đó được lưu trong vùng A1 Hãy thử Sub này trong Module của 1 file Excel bạn mới tạo ra

Workbooks.Open Filename:={đường dẫn tới file excel}

↳ Câu lệnh này sẽ mở File Excel được lưu ở trong đường dẫn

Workbooks.Close SaveChanges:=True

↳ Câu lệnh này sẽ đóng 1 Workbook và lưu những thay đổi được thực hiện trên Workbook đó Nếu thay True bằng False thì Workbook sẽ được đóng, thay đổi sẽ không được lưu

Trang 21

select * from [EXCEL]

Tạo mới Workbook

Lưu Workbook với 1 tên khác (Save as …)

Để tạo mới 1 Workbook, chúng ta có thể sử dụng câu lệnh VBA sau trong 1 Sub

Để lưu Workbook chứa code VBA dưới 1 tên khác, ta có thể thực hiện đoạn code sau đây

Workbooks.Add

↳ Câu lệnh này sẽ tạo mới 1 Workbook

ThisWorkbook.SaveAs "C:\Users\thanh\Desktop\a.xlsm"

↳ Câu lệnh này sẽ lưu Workbook có chứa đoạn code VBA trên dưới tên là

a.xlsm tại đường dẫn chỉ định

17

Khoá học VBA cơ bản cho người mới bắt đầu Click link giảm giá 40%: http://bit.ly/2eEOWsZ

Trang 22

Trong 1 thời điểm, có thể nhiều file Excel sẽ cùng được mở trên máy tính của bạn, để đếm được số lượng Workbook hoặc in đường dẫn tới các Workbook đó chúng ta có thể có 1 số đoạn code như sau

Trang 23

select * from [EXCEL]

7 Làm việc với đối tượng Worksheet

Ngoài Workbook là đối tượng chúng ta đã nhắc đến trong chương trước, đối tượng Worksheet chỉ những bảng tính trong file Excel của chúng ta là nơi chúng ta lưu trữ và xử lý phần lớn dữ liệu Các thao tác với Worksheet cùng các thuộc tính của đối tượng này sẽ được trình bày trong các trang tiếp theo của tài liệu

Trang 24

7 Làm việc với đối tượng Worksheet

Trước khi truy cập vào các thuộc tính của đối tượng Worksheet trong Excel, bạn cần tham chiếu đến đối tượng này Để tham chiếu tới Worksheet trong Excel, bạn có thể sử dụng 1 số cách sau đây

Các cách tham chiếu tới Worksheet trong Excel

↳ Câu lệnh này ghi tên của Worksheet ngoài cùng bên trái ra cửa sổ Immediate Đây là cách tham chiếu theo thứ tự

Trang 25

select * from [EXCEL]

Tham chiếu tới Worksheets bằng code name: trong trình soạn thảo VBA,

cửa sổ Project - VBAProject, bạn nhìn thấy Sheet1 (Bang 1) Ở đây, Sheet1

là code name của đối tượng bảng tính này, còn “Bang 1” là tên của bảng tính đó

↳ Câu lệnh này ghi tên của bảng tính có code name là Sheet1 ra cửa sổ Immediate Đây là cách tham chiếu theo code name

Debug.print Sheet1.Name

↳ Câu lệnh này ghi tên của bảng tính có tên là “Bang 1” ra cửa sổ Immediate Đây là cách tham chiếu theo tên bảng tính

Debug.print Worksheets(“Bang 1”).Name

↳ Thêm 1 worksheet mới

Debug.print Worksheets.Add

↳ Thêm 3 worksheet mới

Debug.print Worksheets.Add Count:=3

↳ Thêm 1 worksheet mới, phía bên trái Worksheet đầu tiên

Debug.print Worksheets.Add Before:=Worksheets(1)

↳ Thêm 1 worksheet mới, phía bên phải Worksheet thứ 3

Debug.print Worksheets.Add After:=Worksheets(3)

↳ Copy bảng tính với code name Sheet1, bản copy được đặt phía sau Worksheet thứ 3

Trang 26

↳ Câu lệnh này sẽ xoá bảng tính có code name là Sheet1, khi thực hiện câu lệnh này, Excel sẽ hỏi để xác nhận lại, để bỏ quan xác nhận và thực hiện thao tác xoá bảng tính, code như sau

↳ Xoá bảng tính với code name Sheet1, bỏ qua hộp thoại xác nhận của Excel về việc xoá

Sheet1.Delete

↳ Câu lệnh này sẽ đổi tên bảng tính có code name là Sheet1 thành “New Name”

Sheet1.Name = “New Name”

↳ Câu lệnh này sẽ ẩn bảng tính có code name là Sheet1

Trang 27

select * from [EXCEL]

8 Làm việc với đối tượng Range

Đối tượng Range sẽ là 1 trong những đối tượng chúng ta sử dụng đến nhiều nhất trong quá trình lập trình với VBA trong Excel Đối tượng này tạo nên bảng tính Excel, nhiều bảng tính (Worksheet) sẽ tạo nên 1 Workbook hay 1 file Excel …

Trang 28

↳ Câu lệnh này sẽ tham chiếu đến vùng A1 và đặt thuộc tính giá trị của vùng A1 với nội dung “Hoc Excel Online”

Range(“A1”).value = “Hoc Excel Online”

↳ Câu lệnh này sẽ tham chiếu đến vùng A1:B5 và đặt thuộc tính giá trị của vùng A1:B5 với nội dung “Hoc Excel Online”

Range(“A1:B5”).value = “Hoc Excel Online”

↳ Câu lệnh trên sẽ điền giá trị “Hoc Excel Online” vào vùng A1:B5 và C2:D3

Range(“A1:B5,C2:D3”).value = “Hoc Excel Online”

↳ Kết quả của câu lệnh trên là 5, được ghi ra trong cửa sổ Immediate

ThisWorkbook.Sheet1.Range(“A1:B5”).value = “Hoc Excel Online”

↳ Nếu chúng ta chỉ làm việc với 1 file Excel, thì chúng ta có thể bỏ ThisWorkbook đi, và thực hiện câu code như trên

Sheet1.Range(“A1:B5”).value = “Hoc Excel Online”

Tham chiếu đến vùng trong Excel, ghi dữ liệu

Một số thuộc tính và phương thức của Range

Thuộc tính Column, Row

8 Làm việc với đối tượng Range

Trang 29

select * from [EXCEL]

↳ Kết quả của câu lệnh trên là 5, được ghi ra trong cửa sổ Immediate

Đối với file xlsx, kết quả của câu lệnh trên là 16384 là số cột mà file Excel này hỗ trợ

Debug.print Range(“E8”).Column

Kết quả của câu lệnh trên là 8, được ghi ra trong cửa sổ Immediate

↳ Đối với file xlsx, kết quả của câu lệnh trên là 1048576 là số dòng mà file Excel này hỗ trợ

↳ Bắt đầu từ ô A100, di chuyển ngược lên phía trên đến ô có nội dung và chọn ô đó

Debug.print Range(“E8”).Row

Debug.print Columns.Count

Debug.print Rows.Count

Range(“A100”).End(xlUp).select

Một số thuộc tính và phương thức của Range

Thuộc tính Column, Row

Chú ý để không nhầm với Rows và Columns

Phương thức End và Select

25

Khoá học VBA cơ bản cho người mới bắt đầu Click link giảm giá 40%: http://bit.ly/2eEOWsZ

Trang 30

↳ Ghi ra cửa sổ Immediate dòng cuối cùng có chứa dữ liệu

↳ Ghi ra cửa sổ Immediate địa chỉ tuyệt đối của ô A4 là $A$4

Trang 31

select * from [EXCEL]

Sử dụng Range.Offset

Giả sử chúng ta đang lựa chọn ô F8

↳ Di chuyển 2 cột sang phải tính từ cột F Kết quả là ô H8 được chọn

Trang 32

↳ Câu lệnh trên sẽ thay đổi kích thước của vùng đang được chọn là F8, với tham số (1,1) thì vùng chọn này sẽ được giữ nguyên là ô F8

Range(“F8”).Resize(1,1).select

↳ Câu lệnh trên sẽ thay đổi kích thước của vùng đang được chọn là F8,

mở rộng vùng chọn kể từ F8 - 2 dòng và 3 cột, kết quả là vùng F8:H9 được chọn

Range(“F8”).Resize(2,3).select

Trang 33

Range(“A1:B5”).Copy Range(“D1”)

↳ 2 câu lệnh trên sẽ copy dữ liệu từ vùng A1:B5, và dán “đặc biệt” bắt đầu

ở vùng A8, các kiểu dán dữ liệu có thể sử dụng là

Range(“A1:B5”).Copy

Range(“A8”).PasteSpecial <paste Type>

Dán tất cả dữ liệuDán tất cả trừ định dạng đường viềnDán và trộn định dạng có điều kiệnDán và sử dụng Source ThemeDán chiều rộng của cột

Dán cả ghi chú (comments)Dán định dạng

Dán công thứcDán công thức và định dạng sốDán Data Validation

Dán giá trị (value)Dán giá trị và định dạng số

29

Trang 34

9 Thuộc tính Cells của đối tượng

Worksheet

Range(“A4”).Value = 234

Cells(4,1).Value = 234

Debug.print Cells(Rows.Count, 1).End(xlUp).Row

Debug.print Cells(1, Columns.Count).End(xlToLeft).Column

Cells([chỉ số hàng], [chỉ số cột])

Khác với đối tượng Range có thể tham chiếu đến 1 vùng gồm nhiều ô trong Excel, thuộc tính Cells của đối tượng Worksheet chỉ có thể tham chiếu đến 1

ô duy nhất trên bảng tính Excel

Cú pháp của việc sử dụng Cells để tham chiếu đến ô trong Excel như sau:

Ví dụ khi chúng ta muốn điền dữ liệu vào ô A4, thì cách sử dụng Range hoặc Cells sau đây đưa lại kết quả giống nhau

Tuỳ vào nhu cầu xử lý dữ liệu mà mỗi cách tham chiếu đến 1 ô sẽ có những lợi ích riêng

Tìm dòng cuối chứa dữ liệu với Cells

Tìm cột cuối chứa dữ liệu với Cells

Để tìm được dòng cuối cùng có chứa dữ liệu trong cột A, chúng ta, có thể sử dụng công thức sau để ghi dòng cuối cùng có chứa dữ liệu ra cửa sổ Immediate

Diễn giải: Cells(Rows.Count, 1) cho chúng ta ô cuối cùng trong cột A End(xlUp) sẽ tương đương với việc di chuyển lên tới ô có chứa dữ liệu đầu tiên ( Row ) sẽ cho chúng ta biết dòng hiện tại của ô chứa dữ liệu đó

Để tìm được cột cuối cùng có chứa dữ liệu trong dòng thứ nhất, chúng ta có thể sử dụng công thức sau để ghi dòng cuối cùng có chứa dữ liệu ra cửa sổ Immediate

Ngày đăng: 05/04/2018, 15:54

TỪ KHÓA LIÊN QUAN

w