VBA Hộp thoại thông báo



1. MsgBox:


Hộp thoại thông báo msgbox trong VBA dùng để tạo thông báo thông tin nào cho người dùng khi cần thiết.

Cấu trúc của hàm msgbox trong VBA:
MsgBox(Prompt, [Buttons As VbMsgBoxStyle], [Title], [HelpFile], [Context]) As VbMsgBoxResult

Chú thích:


Prompt: Bắt buộc (phải có). Là nội dung của hộp thoại thông báo. Chiều dài tối đa của Prompt là 1024 ký tự. Nếu nội dung hộp thoại thông báo có nhiều dòng, để tách dòng bạn có thể dùng các ký tự tách dòng, gồm: Chr(13), Chr(10) hoặc từ khóa vbNewline.


Buttons: Không bắt buộc. Là hằng số quy định cụ thể số lượng và loại các nút hiển thị. Nếu không sử dụng, giá trị mặc định là số 0.






Title: Không bắt buộc. Là chuỗi được hiển thị trên thanh tiêu đề của hộp thoại. Nếu bỏ qua, tên ứng dụng được đặt trong thanh tiêu đề (ở đây, cụ thể ở đây là “Microsoft Excel”).


HelpFile: Không bắt buộc. Chuỗi xác định tên tập tin trợ giúp sử dụng để cung cấp các trợ giúp theo ngữ cảnh cho các hộp thoại.


ContextKhông bắt buộc. Là số thứ tự tình huống trong HelpFile. Nếu HelpFile có thì Context phải có.

VbMsgBoxResult:





Câu lệnh đơn giản như sau:
MsgBox "Nội dung thông báo."

Ví dụ 1:

Sub msgbox1()
    MsgBox "Xin chào!"
End Sub



Có thể nối nội dung thông báo với nội dung trên bảng tính. 

Ví dụ 2: Với [A1]="Exl2Lab"


Sub msgbox2()
    MsgBox "Xin chào! " & Sheet1.Range("A1")
End Sub



Để tạo thông báo có nhiều dòng (xuống dòng trong bảng thông báo) ta dùng từ khóa vbNewLine.

Ví dụ 3:

Sub msgbox3()
    MsgBox "Xin chào! " & Sheet1.Range("A1") & vbNewLine & "Email: " & Sheet1.Range("A2")
End Sub

 



Ngoài ra, msgbox thường hay dùng để kiểm tra kết quả từng đoạn code khi viết, để tạo thông báo nhắc người dùng xác nhận trước một tác vụ quan trọng (như xóa dữ liệu, in ấn…).

Ví dụ 4:

Sub mgbDelete()
Dim ans As Integer
ans = MsgBox("Ban muon xoa du lieu tren sheet nay?", vbYesNo + vbQuestion, "Xoa du lieu")
If ans = vbYes Then
    'Chọn Yes thì thực hiện tác vụ
    Cells.ClearContents
Else
    'không làm gì
End If
End Sub



Chi tiết các ví dụ xem file đính kèm ở cuối bài.

2. InputBox:

Cấu trúc hàm InputBox:
InputBox(Prompt,[Title],[Default],[Xpos],[Ypos],[HelpFile,Context]) As String

Chú thích:
Prompt: Bắt buộc. Là nội dung hiển thị ở trong hộp thoại thông báo, tối đa 1024 ký tự. Để muốn xuống dòng trong hộp thoại thông báo thì dùng ký tự đặc biệt Chr(10) hoặc Chr(13) hoặc dùng vbNewLine chèn vào giữa các dòng.
Title: Không bắt buộc. Là tiêu đề của hộp thoại thông báo, nếu để trống thì tiêu đề là tên ứng dụng (ở đây là “Microsoft Excel”).
Default: Không bắt buộc. Là giá trị mặc định nhập sẵn trong ô để người dùng nhập nội dung cần thông báo vào.
XPos: Không bắt buộc. Là khoảng cách (đơn vị pixels) theo phương X (phương ngang) tính từ mép trái màn hình hiển thị. Nếu để trống (không nhập) giá trị này thì hộp thoại sẽ hiển thị ở giữa theo phương ngang.
YPos: Không bắt buộc. Là khoảng cách (đơn vị pixels) theo phương Y (phương đứng) tính từ mép trên màn hình hiển thị. Nếu để trống (không nhập) giá trị này thì hộp thoại sẽ hiển thị ở giữa theo phương đứng.
HelpFile: Không bắt buộc.Là chuỗi xác định tệp trợ giúp sẽ được sử dụng để cung cấp hỗ trợ giúp ngữ cảnh cho hộp thoại thông báo.
Context: Không bắt buộc. Một số để xác định số ngữ cảnh trợ giúp được ngữ cảnh trợ giúp gán cho chủ đề thích hợp. Nếu ngữ cảnh được cung cấp thì cũng phải cung cấp tài liệu trợ giúp (HelpFile).

 

Ví dụ: Chi tiết xem file đính kèm ở cuối bài.

Sub Vidu_Iputbox()
Dim inBox As String
inBox = InputBox("Chon:" & vbNewLine & "1-Yes" & vbNewLine & "2-No", "Tieu de Input Box", 1)
If inBox = "1" Or inBox = "2" Then
    MsgBox "Day la gia tri vua chon: " & inBox, , "Thong bao"
Else
    MsgBox "Chon sai!", , "Thong bao"
End If
End Sub


 

 



Tải file mẫu: MsgBox, Input

Read more