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

Lập trình VBA cơ bản đến nâng cao

15 8 0

Đ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 15
Dung lượng 697,93 KB

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

Nội dung

LẬP TRÌNH VBA – EXCEL 1 GIỚI THIỆU CHUNG VBA – Visual Basic for Application là một ứng dụng được nhúng trong Excel để thực hiện các thao tác nhất định VBA thường được dùng để rút ngắn thời gian xử lý.

Trang 1

LẬP TRÌNH VBA – EXCEL

1 GIỚI THIỆU CHUNG

VBA – Visual Basic for Application là một ứng dụng được nhúng trong Excel để thực hiện các

thao tác nhất định

VBA thường được dùng để rút ngắn thời gian xử lý công việc của mình, giải quyết các vấn đề thủ công, tối ưu hóa khả năng làm việc và xóa bỏ nhàm chán trong công việc

Bạn có thể dùng VBA để giải quyết rất nhiều công việc khác nhau

 Lưu trữ danh sách

 Lên kế hoạch

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

 Phát triển các biểu đồ

 Tự xây dựng các chương trình ♥

VBA có thể dùng để tạo ra các chương trình (Macro là một ứng dụng của VBA đã được tích hợp để phù hợp hơn với phần lớn người dùng) hoặc các Hàm (Function) tương tự như các hàm có sẵn của Excel

Để bắt đầu lập trình VBA, bạn cần bật được Tab Developer trên thanh công cụ Ribbon của Excel Thao tác như sau

 Chuột phải tại vị trí bất kì trên thanh Ribbon

 Customize the Ribbon → Tick chọn thẻ Developer

 Tab Developer lúc này sẽ hiện trên thanh Ribbon

Tab Developer không chỉ hỗ trợ lập trình VBA thuần túy mà còn hỗ trợ ghi Macro (Macro Recording) - Ứng dụng của lập trình VBA

Trang 2

2 CÁC CHỨC NĂNG LẬP TRÌNH

2.1 BẮT ĐẦU LẬP TRÌNH

Để mở cửa sổ lập trình Microsoft Visual Basic for Application cho File Excel hiện tại, bạn bấm

tổ hợp phím Alt + F11

Tại cửa sổ VBA, bạn chọn Sheet để thực hiện các thao tác lập trình, một môi trường lập trình sẽ

mở ra bên phải để nhập lệnh

Để bắt đầu một chương trình lập trình, bạn bắt đầu với

Sub ten_chuong_trinh () Khi đó, một lệnh kết thúc sẽ được tự động tạo ra đồng thời

End Sub Tương tự như một chương trình main() ở các ngôn ngữ lập trình khác, lúc này, toàn bộ nội dung lập trình của bạn sẽ nằm gọn trong khung Sub – End Sub

- OPTIONS: Để thay đổi các thông báo hay giao diện của môi trường lập trình theo ý muốn bạn

thực hiện các bước

 Tại cửa sổ MVB, menu Tools → Options

 Editor: Cài đặt các thông báo

o Auto Syntax Check: Thông báo khi có lỗi cú pháp (Syntax)

o Require Variable Declaration: Hiện dòng Option Explicit ở đầu Module

o Auto List Members: Hiện danh sách các phương thức/thuộc tính dựa trên từ gợi nhắc

o Auto Quick Info: Hiển thị cú pháp của 1 hàm khi có từ gợi nhắc

o Auto Data Tip: Hiển thị danh sách các dữ liệu khi khai báo biến

 Editor Format: Cài đặt định dạng và giao diện

o Code Color: Chọn màu chữ, màu nền

o Font: Chọn font chữ theo ý thích

o Size: Chọn kích cỡ chữ theo ý thích

- VBAPRỌECT: Tại cửa sổ MVB, menu Tools → VBAProject Properties → General

 VBProject: Để nhận dạng project của bạn trong Window Registry và Object Browser (nó cần có tên duy nhất)

 Project Description: Mô tả project trong Type Library

Nếu bạn không muốn người khác xem Code của mình, bạn có thể thực hiện khóa lại bằng Tab Protection của cửa sổ Project Properties

 Lock Project: Khóa code trong module, không cho nhìn thấy và không cho chỉnh sửa (Lock project for viewing)

 Password to view project properties: Gõ nội dung mật mã vào Password và xác nhận Password

- SECURITY: Chế độ an toàn, bảo vệ khỏi Virus Chức năng này điều khiển hoạt động của macro (ứng dụng của VBA) cho phép macro hoạt động hoặc không

Trang 3

 Tại cửa sổ MVB, menu Tools → Macro → Security → Security Level

 Chọn mức độ an toàn

o Very High: Các macro không thể chạy được (trừ macro của Office)

o High: Chỉ những macro được xác nhận mới có thể chạy Để xác nhận macro, bạn phải đăng kí bằng cách Tools → Security → More → Trusted → Publisher

o Medium: Khi mở file có chứa macro, sẽ có cảnh báo, chọn Enable Macros để cho phép

macro hoạt động, ngược lại chọn Diasable Macros (Trường hợp bạn không mở file có Macro những vẫn được cảnh báo → File của bạn đã bị nhiễm VIRUS MACRO)

o Low: Không đặt cảnh báo an toàn cho macro

 Khi sử dụng VBA, nên đặt Security ở mức Medium hoặc Low

- ERRORS: Trong quá trình lập trình, nếu có xảy ra lỗi (errors) VBA sẽ kiểm tra và tự sửa lỗi

(Các lỗi cú pháp đơn giản) hoặc báo lỗi ngay lập tức (đổi dòng đang có lỗi sang màu đỏ) để bạn sửa lỗi

 Báo lỗi

o Với các lỗi cú pháp cơ bản (viết HOA ↔ viết thường) VBA sẽ không báo lỗi và tự sửa giúp bạn

o Với các lỗi cú pháp phức tạp hơn (Sai chính tả, thiếu từ, thiếu thành phần của hàm,…) VBA sẽ hiện thông báo và chuyển đỏ dòng đang có lỗi

o Với các lỗi Logic hay các lỗi khó phát hiện khác, VBA không thể phát hiện ngay trong quá trình Code được, do đó, khi chạy Debug

 Sửa lỗi

o Đối với các lỗi thông báo trong quá trình Code, bạn có thể tiến hành sửa trực tiếp

o Với những lỗi bắt gặp trong quá trình Debug (được bôi nền vàng) bạn có thể chờ kết thúc quá trình Debug và đi đến để sửa lỗi

2.2 CÁC QUY TẮC KHI LẬP TRÌNH

- CÁC ĐỐI TƯỢNG: Trước hết, cần hiểu về các đối tượng có thể thao tác trong Excel để trong

quá trình lập trình VBA không gặp nhiều rắc rối

 Workbook: Là đối tượng lớn nhất – Cả file Excel

 Worksheet: Là các trang (sheet) trong 1 file Excel

 Chart: Là các biểu đồ

 Range: Là các vùng hay nhóm ô trong 1 Sheet

 Cell: Là đối tượng nhỏ nhất trong Excel – 1 ô

 Để gọi tên 1 đối tượng trong VBA, bạn làm như sau

Doi_tuong(“ten_doi_tuong”)

- CÁC PHƯƠNG THỨC: Hay là các hành động có thể thực hiện đối với 1 đối tượng bất kì

trong Excel

Trang 4

 Activate: Kích hoạt

 Clear: Xóa

 Copy: Sao chép

 Cut: Cắt

 Delete: Xóa nội dung bên trong

 Select: Lựa chọn (Bôi đen)

 Để thực hiện một phương thức cho một đối tượng trong VBA, bạn nhập theo cú pháp

Doi_tuong(“ten_doi_tuong”).Phuong_thuc

- THUỘC TÍNH: Là các thông số của các đối tượng bên trong Excel Một số thuộc tính cơ bản

 ColumnWidth: Độ rộng cột

 Font: Phông

 Formula: Công thức

 Text: Dữ liệu Text

 Value: Dữ liệu giá trị (số)

 Để thiết lập thuộc tính cho một đối tượng trong VBA, thực hiện theo cú pháp

Doi_tuong(“ten_doi_tuong”).Thuoc_tinh = Thong_so

- BIẾN: Tương tự như các ngôn ngữ lập trình khác, các thao tác trung gian trong VBA được

thực hiện thông qua các biến VBA không bắt buộc khai báo biến (VBA sẽ tự tạo ra biến khi bạn sử dụng chúng lần đầu tiên trong Code của mình) Tuy nhiên, vẫn nên định nghĩa rõ ràng cho từng biến sử dụng Các lưu ý khi khai báo biến

Cách đặt tên

 Tên dài tối đa 255 kí tự

 Kí tự bắt đầu phải là chữ

 Không chứa các kí tự đặc biệt ^; &; (; ); %; $; #; !; ~; +; -; *…

 Không đặt trùng với từ khóa của VBA: Print; Sub; End;…

 VBA không phân biệt chứ HOA và thường trong tên biến

 Khai báo kiểu dữ liệu: Các kiểu dữ liệu của VBA

 Byte: Số nguyên dương, 0 – 255

 Boolean: Kiểu Logic, True/False

 Integer: Số nguyên, -32,768 – 32,767

 Long: Số nguyên, -2,147,483,648 – 2,147,483,647

 Single: Số, -3.402823E38 – -1.401298E-45 và 1.401298E-45 – 3.402823E38

 Curency: Kiểu tiền tệ, -922337203685477.5808 – 922337203685477.5807

 Date: Kiểu tời gian, January 1, 100 – December 31, 9999 (Có dấu # ở 2 đầu)

 Object: Tham chiếu đến bất kì đối tượng nào

 String: Chuỗi, 0 – 65535 kí tự (Đặt trong “ “)

 Variant: Kiểu dữ liệu được gán tự động bởi VBA, thay thế được cho mọi kiểu dữ liệu

Trang 5

 Khai báo biến số: Để khai báo một biến số có thể thay đổi giá trị trong quá trình lập trình

Dim ten_bien As kieu_du_lieu

 Khai báo biến cố định: Để khai báo một hằng số (giá trị không đổi)

Const ten_bien = gia_tri

- MẢNG: Mảng là một kiểu dữ liệu đặc biệt, mảng chứa các biến số được sắp xếp theo một trình

tự nhất định – Mỗi biến số là một phần tử của mảng Mảng có biên trên và biên dưới, các phần

tử trong mảng là liên tục Mảng có 2 loại

 Mảng có chiều dài có định: Mảng có số phần tử cố định Cách khai báo

Dim ten_mang (do_dai_chieu_1, do_dai_chieu_2) As kieu_du_lieu

o Độ dài chiều 1/2: Là các số cụ thể

o Kiểu dữ liệu: Là kiểu dữ liệu của các phần tử (biến số) bên trong mảng

o Địa chỉ bắt đầu của mỗi chiều trong mảng là 0

 Mảng động: Mảng có số phần tử dao động trong một khoảng Cách khai báo

Dim ten_mang (do_dai_chieu_1, do_dai_chieu_2) As kieu_du_lieu

o Độ dài chiều 1/2: Là khoảng *** to *** (chiều dài tối thiểu và tối đa cố định)

o Kiểu dữ liệu: Là kiểu dữ liệu của các phần tử (biến số) bên trong mảng

 Hàm Array: Hàm này sẽ tự động tạo ra mảng với các biến số trong nó Các biến này sẽ tự động được gán kiểu Variant Cú pháp hàm

Dim Array(“bien_1”, “bien_2”…)

o Hàm UBound: trả về phần tử cuối cùng của mảng

o Hàm LBound: trả về phần tử đầu tiên của mảng

- THAM CHIẾU ĐẾN Ô VÀ VÙNG: Đây là các thành phần làm việc chính trong Excel, do

đó, để gán dữ liệu vào Worksheet, bạn cần tham chiếu đến các đối tượng con này Một số phương pháp tham chiếu

 Tham chiếu kiểu A1: Kiểu tham chiếu vùng cơ bản nhất Cú pháp

Range(“vung_tham_chieu”) hoặc [vung_tham_chieu]

 Tham chiếu bằng Index Numbers: Dành cho tham chiếu ô Cú pháp

Cells(so_hang,so_cot)

 Số hàng và số cột: Để tham chiếu nhanh đến cả hàng/cột (thay vì dùng tham chiếu kiểu A1) Cú pháp

Rows(so_hang) và Columns(so_cot)

Đặt tên cho vùng: Một phương pháp để đơn giản hóa phương pháp A1, bằng việc đặt tên

cho một vùng cố định bạn không cần nhớ địa chỉ của vùng mà chỉ cần nhớ tên của vùng đó Bạn có thể thực hiện đặt tên cho vùng đó trước hoặc đặt trong quá trình Code

o Tên được tạo trước: Nếu tên đã được đặt trước và nằm trong 1 Sheet thuộc 1 Workbook

Cú pháp

Trang 6

Range(“[ten_Workbook]ten_sheet!ten_vung”) Nếu bạn đang truy cập Sheet và Workbook chứa vùng muốn tham chiếu thì có thể bỏ qua phần tên của 2 đối tượng này

o Tên đặt khi đang Code: Nếu bạn muốn đặt tên cho vùng trong quá trình Code và tham

chiếu đến đó thì thực hiện các bước Workbooks(“ten_Workbook”).Names.Add Name:=”ten_vung”,_

RefersTo:=”=ten_sheet!dia_chi_vung”

Range(“ten_vung”)

 Tham chiếu nhiều mảng: Là cách tham chiếu cùng lúc đến nhiều vùng để thực hiện nhanh

Có thể sử dụng cách tham chiếu A1 hoặc theo tên từng vùng Cú pháp

Range(“vung_1,vung_2,…”)

 Offset cells: Được dùng để tham chiếu đến các ô TIẾP THEO của ô hiện tại theo một quy tắc chung Phương pháp này không thể quay lại vị trí phái trước Cú pháp

Offset(so_dong_xuong,so_cot_phai) Giá trị so_dong_xuong và so_cot_phai có thể âm

 Tham chiếu kiểu R1C1: Thường được sử dụng để tham chiếu đến vùng thực hiện phép tính/công thức Cú pháp

Cong_thuc(R[so_hang_1]C[so_cot_1],R[so_hang_2]C[so_cot_2])

- HỘP THOẠI HELP: Công cụ trợ giúp trong quá trình thao tác và Lập trình

Khi đang Code: Để xem các câu lệnh trong quá trình Code

o Chọn mục cần hỗ trợ

o Ấn phím F1 → Cửa sổ Microsoft Visual Basic Help

 Sử dụng với chủ đề cụ thể: Để xem các câu lệnh với một chủ đề đã biết trước

o Trên cửa sổ MVB, menu Help → MVB Help

o Gõ nội dung mà bạn muốn tìm vào ô Search rồi Enter

 Trinh duyệt đối tượng (Object Browser): Để xem các đối tượng, phương pháp hay thuộc tính khi bổ sung thêm các hàm số (functions) hay cầu lệnh (statements)

o Tại cửa sổ MVB đang mở, menu View → Object Browser

o Tại khung All Libraries, đổi thành Excel

o Trong vùng Classes → Chọn đối tượng

o Trong vùng Members of ‘***’: Các phương thức (biểu tượng xanh) và thuộc tính (biểu tượng bàn tay chỉ) của đối tượng vừa chọn

Trang 7

2.3 CÁC NHÓM LỆNH

2.3.1 WITH – END WITH

Dùng để thực hiện nhiều thao tác với nhiều đối tượng đơn lẻ Phương pháp này được dùng với các đối tượng có nhiều thuộc tính Cú pháp

With Phuong_thuc.Doi_tuong .Thuoc_tinh_1 = gia_tri_1 .Thuoc_tinh_2 = gia_tri_2 .Thuoc_tinh_3 = gia_tri_3

End With

2.3.2 LỆNH ĐIỀU KIỆN

- IF: Câu lệnh điều kiện đơn giản nhất Cú pháp

If <dieu_kien> Then <cau_lenh_1> [Else <cau_lenh_2>]

Phần Else trong [] là phần tùy chọn, có thể không cần hoặc là dùng nhiều lần Else tùy theo mục đích lập trình Trường hợp dùng nhiều Else thì thay bằng ElseIf và kết thúc bằng End If

- SELECT CASE: Tương tự ElseIf, cấu trúc Select Case cho phép thực hiện thiều câu lệnh khác

nhau Mặt khác, không như If, Select Case cho phép dùng nhiều điều kiện để chọn lọc hơn Cú pháp

Select Case <bieu_thuc_kiem_tra>

[Case <bieu_thuc_1>

<cau_lenh_1>]

[Case <bieu_thuc_2>

<cau_lenh_2>]

… [Case <bieu_thuc_n>

<cau_lenh_n>]

End Select

- XÂY DỰNG ĐIỀU KIỆN: Trường hợp thuật toán cần giải quyết đồng thời nhiều điều kiện,

để kết hợp các điều kiện với nhau (Trong câu lệnh If) có thể sử dụng And hoặc Or

 And: Thỏa mãn đồng thời tất cả điều kiện nối với nhau bởi And

 Or: Thỏa mãn ít nhất 1 trong các điều kiện nối với nhau bởi Or

2.3.3 HỘP THOẠI

- MESSAGE BOX: Hiển thị hộp thông báo lên trên màn hình Cú pháp

MsgBox(prompt [, buttons] [, title] [, helpfile, context])

 prompt: Nội dung lời nhắc của hộp thông báo

 buttons: Tùy chọn các nút lựa chọn (Yes/No, OK,…)

 title: Nội dung trên đầu hộp thông báo

Trang 8

 helpfile: File hỗ trợ

 context: Số thứ tự tình huống trong filehelp (chỉ tùy chỉnh nếu chọn filehelp) Các thông điệp trong buttons

vbOKCancel 1 Hiện nút OK và Cancel

vbAbortRetryIgnore 2 Hiện nút Abort, Retry và Ignore vbYesNoCancel 3 Hiện nút Yes, No và Cancel

vbYesNo 4 Hiện nút Yes và No

vbRetryCancel 5 Hiện nút Retry và Cancel

Các loại buttons

vbOK 1 Chọn nút OK vbCancel 2 Chọn nút Cancel vbAbort 3 Chọn nút Abort vbRetry 4 Chọn nút Retry vbIgnore 5 Chọn nút Ignore vbYes 6 Chọn nút Yes vbNo 7 Chọn nút No

Các biểu tượng thông điệp

VbCritical Dùng cho những thông báo lỗi, thất bại

vbQuestion Dùng cho những câu hỏi cần lựa chọn

vbExclamation Dùng cho các thông báo

Trang 9

vbInformation Dùng cho các thông báo cung cấp thông tin

vbDefaultButton1 0 Mặc định nút lệnh thứ nhất

vbDefaultButton2 256 Mặc định nút lệnh thứ hai

vbDefaultButton3 512 Mặc định nút lệnh thứ ba

- INPUT BOX: Để người dùng nhập dữ liệu vào Khi dùng phương thức này, một hộp thoại sẽ

hiện ra để bạn vào dữ liệu, chờ người dùng nhập thông tin hoặc bấm OK/Cancel, thông tin nhận được sẽ được gán kiểu String Cú pháp

expression.InputBox(prompt [, title] [, default], [, left], [, top] [helpfile, context] [, type])

 prompt: Nội dung lời nhắc của hộp

 title: Nội dung trên đầu hộp

 left: Khoảng cách từ cạnh trái hộp đến cạnh trái màn hình

 top: Khoảng cách từ cạnh trên hộp đến cạnh trên màn hình

 helpfile: File trợ giúp

 context: Số thứ tự tình huống trong filehelp (chỉ tùy chỉnh nếu chọn filehelp)

 type: Số biến đầu vào (nếu bỏ qua, giá trị nhập mặc định là String)

Bảng giá trị cho tham số type

0 Công thức

1 Số

2 Chuỗi (String)

4 Giá trị Logic (True/False)

8 Ô tham chiếu

16 Giá trị lỗi

64 Mảng các giá trị

2.3.4 LỆNH LẶP

Một công cụ đắc lực giúp tối ưu thuật toán, rút ngắn thời gian xử lý cũng như là câu lệnh Một

số kiểu vòng lặp trong VBA

- DO – LOOP: Thực hiện một khối lệnh với số lần lặp cố định Trong đó, biểu thức điều kiện

phải trả về kết quả False (0) hoặc True (khác 0) Cú pháp

Do

<cau_lenh>

Loop

Trang 10

Cần một điều kiện If để tạo điểm thoát (Exit) ra khỏi vòng lặp

- DO WHILE – LOOP: Thực hiện một khối lệnh khi thỏa mãn một điều kiện True (khác 0) và

tự lập điểm thoát ra (Exit) khi kết quả điều kiện là False (0) Cú pháp

Do While <dieu_kien>

<cau_lenh>

Loop

- DO – LOOP WHILE: Tương tự DO WHILE – LOOP, những thay đổi vị trí kiểm tra điều kiện

(dẫn đến 1 số khác biệt về điểm thoát ra) Cú pháp

Do

<cau_lenh>

Loop While <dieu_kien>

- DO UNTIL – LOOP: Cũng tương tự với While Cú pháp

Do Until <dieu_kien>

<cau_lenh>

Loop Tương tự với While, chúng ta cũng có DO – LOOP UNTIL

- FOR – NEXT: Cho phép thực hiện vòng lặp với số vòng biết trước Cú pháp

For <bien_dem> = <diem_dau> To <diem_cuoi> [Step <buoc_nhay>]

<cau_lenh>

Next [<bien_dem>]

Biến đếm, điểm đầu, điểm cuối và bước nhảy là các giá trị số Bước nhảy có thể âm hoặc dương, khi bị bỏ trống sẽ mặc định là 1

- FOR EACH – NEXT: Hoạt động tương tự như FOR – NEXT nhưng thực hiện số lần lặp theo

số phần tử của mảng hay một tập hợp (đặc biệt là khi chưa biết số lượng phần tử) Cú pháp

For Each <phan_tu> In <Mang/Tap_hop>

<cau_lenh>

Next <phan_tu>

- EXIT: Để tạo điểm thoát sớm khỏi vòng lặp, hàm, thuộc tính hiện tại hoặc cả chương trình,

bạn chỉ cần dùng hàm Exit phù hợp Các cú pháp

Exit Do Exit For Exit Function Exit Sub Exit Propertiy

Ngày đăng: 31/10/2022, 21:02

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w