You are on page 1of 31

Trường ĐH Sư phạm Kỹ Thuật TP.

HCM
Khoa Kinh Tế

TIN HỌC ỨNG DỤNG


Khối ngành kinh tế

Tìm hiểu VBA (tt)


GV: THS. ĐỖ PHƯỚC SANG

TP. Hồ Chí Minh, tháng 9 năm 2021


VBA trong Excel
Function trong VBA
• Một Function trong VBA (chức năng do người
dùng tự định nghĩa) là một nhóm các mã tái sử
dụng, được gọi là bất cứ nơi nào trong chương
trình của bạn. Điều này giúp loại bỏ sự việc viết
mã giống nhau lặp đi lặp lại. Điều này cho phép
các lập trình viên phân chia một chương trình lớn
thành một số chức năng nhỏ và dễ quản lý.
• Ngoài các Function sẵn có, VBA cũng cho phép
người dùng tạo ra các Function của riêng bạn.
Function trong VBA
Cú pháp của Function trong VBA
• Không có định nghĩa kiểu trả về cụ thể:

• Định nghĩa kiểu trả về cụ thể:

Trong đó:
[parameter-list]: là danh sách tham số, có thể có không, một hoặc nhiều.
[data-type]: là kiểu giá trị trả về của function, có thể định nghĩa hoặc không.
Function trong VBA

Đặc điểm của Function trong VBA


• Một Function trong VBA có thể có giá trị trả
về hoặc không. Điều này là cần thiết nếu bạn
muốn Function trả về một giá trị.
• Ví dụ: bạn có thể truyền hai số vào trong một
Function và sau đó bạn mong muốn Function
đó trả về tích của hai số đã cho.
Function trong VBA
Ví dụ: viết một Function tính tích của hai số, với tham số thứ hai là tùy
chọn (có thể nhập hoặc không). Nếu tham số thứ hai không được
truyền vào thì Function này trả về tích của số thứ nhất với chính nó.
Ngược lại nếu tham số thứ hai được truyền vào thì Function này trả về
tích của số thứ nhất và thứ hai.
• Chỉ rõ kiểu giá trị trả về của function là Double:

• Hoặc không cần chỉ rõ kiểu giá trị trả về của function:
Function trong VBA
Gọi một Function trong VBA
Bạn có thể gọi lại function trong một Function khác hoặc trong
một Sub khác, hoặc trong một Cell của Worksheet.
Gọi một Function trong một Functon khác hoặc trong một Sub
khác
Function trong VBA
• Gọi một Function trong một Cell của Worksheet
Để gọi một Function, hãy gọi hàm bằng cách sử dụng tên hàm
như thể hiện trong ảnh chụp màn hình sau
Function trong VBA
• Kết quả
Thủ tục (Sub Procedure) trong VBA
• Sub trong VBA hay còn gọi là thủ tục trong VBA là
tương tự như function, tuy nhiên có một số khác
biệt.
• Các thủ tục (Sub) KHÔNG không có giá trị trả về trong
khi các function có thể hoặc không trả lại một giá trị.
• Các thủ tục Sub được gọi với từ khóa Call hoặc
không.
Thủ tục (Sub Procedure) trong VBA
• Cú pháp của Sub trong VBA

Trong đó:
• [parameter-list]: là danh sách tham số, có thể có không, một
hoặc nhiều.
Ví dụ:
Ví dụ sau hiển thị tích của hai số đã cho trong một hộp thoại thông
báo.
Thủ tục (Sub Procedure) trong VBA
Gọi một Sub trong VBA
• Bạn có thể gọi lại Sub trong một Functon khác hoặc trong
một Sub khác.
• Bạn có thể sử dụng hoặc không cần sử dụng từ
khóa Call để gọi Sub.
Gọi Sub trong một Sub khác

Gọi Sub trong một Function khác


Thủ tục (Sub Procedure) trong VBA
Gọi Sub trong Cell của Worksheet thông qua một function
• Bây giờ bạn sẽ chỉ có thể gọi Sub trong Cell của Worksheet thông
qua một function như thể hiện trong ảnh chụp màn hình sau đây:
Thủ tục (Sub Procedure) trong VBA
MACRO
-Macro Là tập hợp các lệnh và hàm được lưu
trữ trong một module của VBA nhằm thực
hiện một nhiệm vụ nào đó
MACRO
Macro và các công cụ VBA có thể tìm thấy trong
thẻ Developer.
Nếu thẻ developer bị ẩn. Bấm vào thẻ:
File > Options > Customize Ribbon > Main Tabs
> Developer.
MACRO
Tạo Macro: Trong thẻ Developer, click Macros để xem những bản ghi. Ta có
thể thao tác như sau:
MACRO
Chạy và sử dụng Macro:
MACRO
Kết quả sau khi chạy Macro:
MACRO
Lưu file Macro: File -> Save as.
Cấu Trúc MsgBox trong VBA
Câu lệnh MsgBox sẽ cho hiện lên trên màn hình
một hộp thông báo, giá trị nhận được là biến số
(variable) trong macro. Sử dụng MsgBox giúp bạn
rất hiệu quả trong việc gỡ rối (hoặc tìm chỗ sai,
giá trị trung gian,...) khi xây dựng chương trình.
Hàm MsgBox ở dạng tổng quát:

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


Cấu Trúc MsgBox trong VBA
Trên màn hình sẽ hiện hộp thông báo và đợi bạn bấm chuột
vào nút chọn và trở về giá trị nguyên nào khi bạn chọn loại
nút.
- Prompt là nội dung lời nhắc của hộp thông báo.
- Buttons là tuỳ chọn loại nút điều khiển (như Yes, No, OK)
- Title là tuỳ chọn nội dung chữ trên đầu hộp thông báo
- Helpfile là tuỳ chọn và điều khiển file trợ giúp nào để sử
dụng.
- Context là tuỳ chọn và là số thứ tự tình huống trong
helpfile. Nếu helpfile có thì mục context cũng phải có.
Cấu Trúc MsgBox trong VBA
1. Một MsgBox đơn giản:
MsgBox “This is fun”

2. Một Message + giá trị


MsgBox “Hello my friends” & Range (“A1”).Value

3. Một Message có 2 dòng


MsgBox “Line 1” & VbNewLine & “Line 2”
Cấu Trúc Input Box trong VBA
Khi sử dụng phương thức này, một hộp thoại sẽ cho hiện ra
để bạn vào dữ liệu, chờ cho người dùng nhập dữ liệu vào
hoặc là bấm vào nút OK hoặc Cancel, giá trị nhận được
được coi là chuỗi (string).
Đây là một cách để vào giá trị đơn lẻ hoặc địa chỉ của các ô
trong quá trình chạy macro.
Phương thức InputBox ở dạng tổng quát:
expression.InputBox (prompt [, title] [, default], [, left], [,
top] [helpfile, context] [, type])
Cấu Trúc Input Box trong VBA
Expression: một biểu thức trả về đối tượng Application.
Trong đó:
- Prompt là nội dung lời nhắc của hộp vào dữ liệu.
- Title là tuỳ chọn nội dung chữ trên đầu hộp vào dữ liệu.
- Left là tuỳ chọn khoảng cách từ góc bên trái hộp thoại đến
góc bên trái màn hình (mặc định là hộp thoại nằm giữa màn
hình). Đơn vị tính là là điểm (point), một điểm bằng 1/72
inch hay khoảng 1/28 cm. Chức năng này ít sử dụng.
Cấu Trúc Input Box trong VBA
- Top là tuỳ chọn khoảng cách từ đỉnh hộp thoại đến đỉnh
màn hình (mặc định là hộp thoại nằm giữa màn hình). Đơn
vị tính là là điểm.
- Helpfile là tuỳ chọn và điều khiển file trợ giúp nào để sử
dụng.
- Context là tuỳ chọn và là số thứ tự tình huống trong
helpfile. Nếu helpfile có thì mục context cũng phải có.
 type là tuỳ chọn biến số đầu vào. Trong trường hợp bỏ
qua, giá trị đầu vào coi như là chuỗi.
Offset Cell
- Thuộc tính Offset thường được sử dụng để tham chiếu
đến ô khác mà có quan hệ với ô đang hoạt động.
- Cấu trúc được viết như sau:
Offset Cell
- Expression có thể là 1 Range (vùng ) hoặc 1 Cells (ô)
- Khi viết thuộc tính Offset thì kèm theo dấu chấm, sau đó gọi
tên thuộc tính theo cú pháp
- Tham số bên trong Offset được viết trong cặp dấu
ngoặc đơn, gồm:
• Số dòng di chuyển: Nếu số >0 thì di chuyển xuống dưới so
với điểm gốc, nếu số <0 thì di chuyển lên trên so với điểm
gốc. Nếu = 0 thì giữ nguyên dòng
• Số cột di chuyển: Nếu số >0 thì di chuyển sang phải so
với điểm gốc, nếu số <0 thì di chuyển sang trái so với điểm
gốc. Nếu = 0 thì giữ nguyên cột
Offset Cell
• Ví dụ1 : Range(“A1”).Offset(0, 1)
• => Điểm gốc là ô A1, di chuyển 0 dòng và 1 cột
về bên phải => Kết quả là tham chiếu tới ô B1
• Ví dụ 2: Cells(5, 3).Offset(-1, 2)
• => Điểm gốc là ô C5 (dòng 5 cột 3), di chuyển 1
dòng lên phía trên, 2 cột về bên phải => Kết quả
tham chiếu tới ô E4 (dòng 4 cột 5)
Cách tô màu chữ trong Cell

Set màu chữ trong Cell

 Cách 1: Range("A5").Font.Color = RGB (255 , 0, 0)

Cách 2: Range(“A5").Font.Color = vbBlue


Ví dụ:

You might also like