ẾU GIỚI THIỆU EXCEL VBA

18
GII THIU EXCEL VBA NGUY N PHI HI U P. QU N L Ý R I RO TÍN D NG

Transcript of ẾU GIỚI THIỆU EXCEL VBA

Page 1: ẾU GIỚI THIỆU EXCEL VBA

GIỚI THIỆU EXCEL VBA

N G U Y ỄN P H I H I ẾU

P. Q UẢN LÝ RỦ I R O T Í N DỤN G

Page 2: ẾU GIỚI THIỆU EXCEL VBA

NỘI DUNG

�2

Q & AC Á C K H Á I N I ỆM L Ậ P

T R Ì N H

L À M V I ỆC VỚ I V B EV B A L À G Ì ?

Page 3: ẾU GIỚI THIỆU EXCEL VBA

VBA LÀ GÌ?

�3

Visual Basic for Applications là ngôn ngữ lập trình bởi Microsoft dùng để phát triển các chương trình điều khiển Excel nhờ vào các hướng dẫn do coder viết.

VBA là ngôn ngữ lập trình, nhưng cũng có thể hiểu là ngôn ngữ Macro. Đây là từ do Microsoft phát triển, tiếng Hy Lạp là Makros, có nghĩa là lớn.

Page 4: ẾU GIỚI THIỆU EXCEL VBA

VBA

THỂ

LÀM

GÌ?

Bạn có thể phát triển Macro tự động đánh máy danh sách nhân viên các bộ phận.

T H Ê M KÝ TỰ

Thao tác Excel thực hiện những hoạt động thường xuyên được lặp đi lặp lại.

TỰ ĐỘN G H O Á

Bên cạnh những hàm tính toán có sẵn do Microsoft cung cấp, VBA cho phép người dụng tạo thêm những hàm tính mới tuỳ chỉnh.

TẠO H À M MỚ I

Người dùng tuỳ ý tạo ra add-ins cho Excel. Một trong số add-ins nổi tiếng nhất được tạo từ VBA là Analysis ToolPack.

TẠO A D D - I N S

VBA cho phép coder tạo ra các biểu mẫu cho người dùng lựa chọn, khiến Excel trở nên chuyên nghiệp hơn.

U S E R F O R M S

VBA có thể dùng để phân tích thống kê dữ liệu, tạo charts, pivots,...

P H Â N T Í C H DỮ L IỆU

Page 5: ẾU GIỚI THIỆU EXCEL VBA

VISUAL BASIC EDITOR

�5

VBE là ứng dụng dùng để viết và chỉnh sửa VBA. Excel phải khởi động thì VBE mới chạy được. Menu bar: chứa các commands cho VBE. Toolbar: trực tiếp dẫn đến các commands trong Menu bar. Project window: là mô hình cây mô tả cấu trúc các tệp dữ liệu được Excel quản lý. Code window: nơi viết VBA. Immediate window: nơi trực tiếp chạy các VBA code, thường được dùng trong quá trình kiểm thử (testing).

Page 6: ẾU GIỚI THIỆU EXCEL VBA

NGỮ PHÁP VBA

Page 7: ẾU GIỚI THIỆU EXCEL VBA

ĐỐI TƯỢNG - PHƯƠNG THỨC

�7

VBA là ngôn ngữ lập trình hướng đối tượng. Mọi thành phần trong Excel đều là đối tượng. Mỗi đối tượng có một thuộc tính riêng nhằm mô tả đặc điểm của đối tượng đó. Có thể ví đối tượng trong VBA như tập hợp toán học. Ví dụ: XeMáy.Honda.Xega("AirBlade")

Các phương thức là các hành động của các đối tượng. Ví dụ: XeMáy.Honda.Xega("AirBlade").Nổ

Page 8: ẾU GIỚI THIỆU EXCEL VBA

�8

BIẾN - KIỂU DỮ LIỆU

Biến là những ký tự dùng để lưu trữ các đối tượng cùng các thuộc tính của chúng. Việc lưu trữ được thực hiện thông qua việc gán. VBA không yêu cầu khai báo biến như một số ngôn ngữ bắt buộc (Pascal) nhưng việc khai báo biến sẽ: • giúp hệ thống code dễ dàng hơn, nhìn gọn hơn. • lưu trữ dữ liệu và hệ thống vận hành được hiệu quả hơn. Lưu ý: VBA không phân biệt chữ Hoa và chữ Thường.

Khi khai báo biến, coder cần khai báo luôn kiểu dữ liệu của biến. Các kiểu dữ liệu bao gồm: Byte, Boolean, Integer, Long, Single, Currency, Date, Object, String, Variant,...

Page 9: ẾU GIỚI THIỆU EXCEL VBA

VÍ DỤ

�9

Theo bạn kết quả đoạn code này là gì? Đoán xem dòng code này có nghĩa gì? Coder chuyên nghiệp thích kiểu nào hơn?

Page 10: ẾU GIỚI THIỆU EXCEL VBA

CẤU TRÚC WITH

�1 0

Cấu trúc With dùng để rút ngắn các đối tượng trong VBA: thay vì diễn giải theo cặp 1 đối tượng - 1 thuộc tính thì coder có thể diễn giải theo cặp 1 đối tượng - nhiều thuộc tính.

Cấu trúc With tiết kiệm bộ nhớ và workload cho máy tính.

Cấu trúc With trong With gọi là nested With.

Page 11: ẾU GIỚI THIỆU EXCEL VBA

DEBUG - ÁM ẢNH KINH HOÀNG

�11

Syntax errors là lỗi dễ nhận ra và dễ sửa nhất. Chúng thường xuất phát từ các nguyên nhân điển hình như: đánh máy sai, bỏ từ khoá, hoặc các lỗi ngữ pháp khác. VBE thường sẽ highlight lỗi này trong Code window.

SYNTAX E

RR

OR

S

Runtime errors khó phát hiện hơn (khó sửa hơn cũng như phổ biến nhất) vì lỗi chỉ xuất hiện khi coder chạy chương trình.

Logic errors là lỗi khó phát hiện nhất, vì coder sẽ không hiểu lỗi là do đâu. Có thể coder chạy chương trình, vẫn xuất ra kết quả, nhưng lại không biết kết quả này sai.

RUNTIME E

RR

OR

S LOGIC E

RR

OR

S

Page 12: ẾU GIỚI THIỆU EXCEL VBA

VBA CHI TIẾT

Page 13: ẾU GIỚI THIỆU EXCEL VBA

CÁC

NỘ

I DU

NG

C

HI T

IẾT

Các kiểu tham chiếu Số chỉ mục Số hàng và số cột Đặt tên cho vùng Offset

T H A M C H IẾU

C ẤU T R Ú C R Ẽ N H Á N H( CẤU T R Ú C

L O G I C )

V Ò N G LẶP

DỮ L I ỆU MẢN G

U S E R F O R M S

TẠO H À M T Í N H T O Á N

KỸ T H UẬ T E R R O R -

H A N D L I N GKỸ T H UẬ T K IỂM T HỬ

U S E R I N T E R F A C E

TẠO A D D - I N S ỨN G DỤN G

L À M V I ỆC VỚ I R A N G E S

Thuộc tính Phương thức Tham chiếu Đặt tên - quy mô tên

Cấu trúc If: Single If, If-Else, If-Elseif-Else, Nested If Cấu trúc Case

For For Each Do

Mảng là gì? Tại sao cần mảng? Indexing Dimension và Redim Các hàm trong mảng

Sub và Function

Thiết kế

On Error ... Input không phù hợp

Page 14: ẾU GIỚI THIỆU EXCEL VBA

Q&A�1 4

Page 15: ẾU GIỚI THIỆU EXCEL VBA

CÁC CÂU HỎI THƯỜNG GẶP

�1 5

Tôi đã tạo function bằng VBA nhưng nhập vào Excel lại báo lỗi #NAME?

VBA có thể tăng số dòng hoặc số cột trong Excel không?

Tôi có thể sử dụng VBA macro recorder để ghi lại mọi macro được không?

Tôi rất hay gặp lỗi "Subscript out of range".�

Tôi có thể bảo mật code của tôi được không?�

Tôi làm báo cáo thường xuyên và dữ liệu luôn thay đổi. Có cách nào VBA có thể tự động cập nhật số dòng hoặc số cột trong data của tôi không?

Cho dù dùng VBA nhưng Excel tính toán vẫn còn chậm, đôi lúc còn treo máy. Tôi nên làm gì?

�Tôi viết code khá dài nhưng xuống hàng lại bị báo lỗi syntax.

�Tôi muốn thiết kế một bảng popup có nhiều tin nhắn.�

Page 16: ẾU GIỚI THIỆU EXCEL VBA

�1 6

Khai báo tất cả các biến (nên dùng Option Explicit). Kiểm tra lại code sau khi đã chạy thành công (sắp xếp code cho gọn). Loại tất cả các phương pháp debug. Đặt tên lại các biến cho hợp lý. Thêm comment để có thể hiểu được code trong trường hợp review sau này. Đối với UserForms và Message boxes cần kiểm tra lỗi chính tả Nếu dự án có sự liên kết của rất nhiều bộ code, cần đảm bảo tính thống nhất của các bộ code đó. Nên có thói quen "thí nghiệm"

DO DO NOT

Đừng tốn thời gian đặt password cho code. Trong nhiều trường hợp, Excel không phải là toàn năng, nên có phương án thay thế. Không mặc định Excel cái gì làm cũng được. Không mặc định ai cũng hiểu macro. Không phải code nào Excel nào chạy cũng được, tuỳ phiên bản. Đừng quên backup dữ liệu

Page 17: ẾU GIỚI THIỆU EXCEL VBA

�1 7

V B A H E L P

Đây là nơi khởi đầu tốt nhất để học V B A l i ê n quan đến đố i tượng, thuộc tính và phương thức.

M I C R O S O F T S U P P O R T

Microsoft có cung cấp một số dịch vụ hỗ trợ Excel cũng như VBA: support.microsoft.com, office.microsoft.com Ngoài ra Microsoft còn cung cấp thêm chứng chỉ nghề nghiệp MCSA và MCSE.

I N T E R N E T W E B S I T E S

S t a c k o v e r fl o w , MrExce l , Ozg r i d , Youtube, Giải pháp Exce l , Thủ thuậ t Excel,... là những trang web tốt để tham khảo và học hỏi từ các chuyên gia.

E X C E L B L O G S

Ngoài các trang web và tài liệu chính thống, các chuyên gia còn có riêng cho mình các blogs nhằm ch ia sẻ k inh nghiệm dùng Excel lẫn VBA, có thể tham khảo như: Guru, Excel off the grid, AbleBits,...

Page 18: ẾU GIỚI THIỆU EXCEL VBA

�1 8

N G U Y ỄN P H I H I ẾU

THE END.

Cảm ơn mọi người đã góp mặt và chú ý lắng nghe.

Dù đã cố gắng chuẩn bị kỹ lưỡng, phần trình bày không thể tránh khỏi những thiếu sót và sơ suất nhất định, mong mọi người góp ý để người trình bày cải thiện tốt hơn.

Mọi ý kiến đóng góp hoặc thắc mắc, vui lòng gửi về email nội bộ: [email protected].

Xin chân thành cảm ơn.