Hộp thoại trong VBA – giáo trình lập trình vba cho excel – 123docz.net

Một phần của tài liệu GIÁO TRÌNH LẬP TRÌNH VBA CHO EXCEL

Hộp thoại (Dialog) là một trong những cách thức để Windows giao tiếp
với người sử dụng. Dưới đây là 2 loại hộp thoại mà bạn dễ dàng tạo ra để điều
khiển trong suốt quá trình chạy macro (MsgBox và InputBox).

10.1. Hộp thông báo (Message box)

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 (như hình 18). 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])

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

56

10.1.2. Mô tả thông số các nút

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

Ghi chú: Tại mỗi kiểu thông điệp, âm thanh báo khi hiển thị thông điệp đi
kèm theo sẽ khác nhau.

10.1.4. Xây dựng tham số cho MsgBox

Để sử dụng tuỳ biến hộp thông báo, bạn phải biết phối hợp các thông số
và nút lệnh. Việc sử dụng hộp MsgBox có ý nghĩa rất quan trọng trong việc điều
khiển chương trình. Để hiểu chi tiết, các bạn xem ví dụ dưới đây.

Sub Nhangui()

Dim Truonghop As Integer

Truonghop = MsgBox(“Ban co muon thoat khoi chuong trinh khong”,
vbYesNoCancel + vbQuestion + vbDefaultButton1,”Chuong trinh tinh lun”)

57

If Truonghop = vbYes Then

MsgBox “Ban vua chon nut Yes.”, vbInformation
ElseIf Truonghop = vbNo Then

MsgBox “Ban vua chon nut No.”, vbCritical
ElseIf Truonghop = vbCancel Then

MsgBox “Ban vua bam nut Cancel.”, vbExclamation
End If

End Sub

Hình vẽ dưới thể hiện kết quả chạy Sub trên và hộp thông báo khi bạn
chọn nút No. Trong Sub trên, bạn có thể thay

ElseIf Truonghop = vbNo Then
bằng

ElseIf Truonghop = 7 Then

Hình 42: Ví dụ về cách tạo MsgBox trong VB và khi chọn nút No

10.2. Phương thức InputBox (Inputbox Method)

Nhằm thể hiện hộp thoại để người sử dụng nhập dữ liệu vào.

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. Bạn không thể gán được

58

lệnh khi chọn nút OK hay Cancel như trong MsgBox. Đó chính là hạn chế của
hàm này nên ít được ứng dụng khi đầu vào nhiều số liệu.

Phương thức InputBox ở dạng tổng quát

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

context] [, type])

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.

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

Ví dụ:

Sub VD_Input()
Dim Dangmang

59

Set Mang = Application.InputBox(“Vao mang:”, “Linh tinh”, Type:=8)
Cot = Dangmang.Columns.Count „ Tính số cột chọn

Hàng = Dangmang.Rows.Count „ Tính số hàng chọn
MsgBox “So cot la: ” & Cot

MsgBox “So hang la: ” & Hang

MsgBox “Dia chi o dau la: ” & Dangmang.Cells(1, 1).Address

MsgBox “Dia chi o cuoi la: ” & Dangmang.Cells(Cot, Hang).Address
„ Address là thông tin địa chỉ ô

End Sub

Kết quả vào dữ liệu là mảng dưới đây. Ngoài ra bạn còn thu được một số
thông tin về mảng đó như số hàng, số cột, địa chỉ ô,…