Message Boxes được dùng để nhắc nhở người sử dụng một chuyện gì, vă địi hỏi một phản ứng năo đó từ người sử dụng. Ví dụ, khi ta chấm dứt chương trình MSWord mă chưa lưu trữ hồ sơ thì MSWord sẽ nhắc ta lưu trữ nó bằng Dialog dưới đđy:
Trong trường hợp năy người sử dụng có thể click một trong 3 buttons. Nếu click Yes thì sẽ xúc tiến việc lưu trữ hồ sơ trước khi kết thúc chương trình MSWord. Nếu click No thì MSWord sẽ lặng lẽ kết thúc mă khơng lưu trữ hồ sơ. Nếu click Cancel thì có nghĩa người sử dụng đổi ý việc chấm dứt chương trình vă trở lại tiếp tục dùng MSWord.
Tham số thứ nhất của MsgBox lă thông điệp “Close the program down?”, tham số thứ hai lă tập hợp của icon (vbQuestion) vă số buttons (vbOKCancel) bằng câch cộng hai hằng:
vbQuestion + vbOKCancel (hai buttons OK vă Cancel), tham số thứ ba lă title (tiíu đề) của
Dialog.
Trong ví dụ MSWord trín hằng số của icon vă buttons lă vbExclamation +
vbYesNoCancel (ba nút Yes, No vă Cancel).
Ta chọn số vă loại buttons theo bảng dưới đđy:
Tín hằng Câc buttons
vbOKOnly OK
vbOKCancel OK Cancel
vbYesNo Yes No
vbRetryCancel Retry Cancel vbYesNoCancel Yes No Cancel vbAbortRetryIgnore Abort Retry Ignore
Hằng số của câc icons ta có thể dùng lă vbCritical, vbQuestion, vbExclamation vă
vbInformation.
Khi một Message Box được mở ra, cả chương trình ngừng lại vă đợi người sử dụng phản ứng. Ta nói Message Box được hiển thị trong Modal Mode, nó dănh mọi sự chú ý vă tạm ngưng câc sự thực thi khâc trong cùng chương trình. Sau khi người sử dụng click một button, Message Box sẽ biến mất vă chương trình sẽ tiếp tục chạy từ dòng code ngay dưới dòng MsgBox.
Trong ví dụ trín ta dùng MsgBox như một Sub, nhưng ta cũng có thể dùng MsgBox như một Function để biết người sử dụng vừa mới click button năo. Function MsgBox returns một value (trả về một giâ trị) mă ta có thể thử để theo đó thi hănh. Ví dụ như:
Private Sub CmdPrompt_Click()
Dim ReturnValue As Integer
ReturnValue = MsgBox("Close the program down", vbQuestion + vbOKCancel, "Exit Program")
Select Case ReturnValue Case vbOK
MsgBox "You clicked OK" Case vbCancel
End Select
End Sub
Câc trị số Visual Basic intrinsic constants mă Function MsgBox returns lă:
Trị số Tín nút Tín hằng 1 OK vbOK 2 Cancel vbCancel 3 Abort vbAbort 4 Retry vbRetry 5 Ignore vbIgnore 6 Yes vbYes 7 No vbNo
Chúng ta có thể hiển thị thơng điệp trong Message Box thănh nhiều dòng bằng câch dùng hằng vbCrLf (CarriageReturn vă LineFeed) để đânh dấu những chỗ ngắt khúc như sau:
MsgBox "This is the first line" & vbCrLf & " followed by the second line"
Nếu chúng ta thấy mình thường dùng MsgBox với cùng một icon vă những buttons, nhưng có thơng điệp khâc nhau, chúng ta có thể viết một Global Subroutine trong mơ-đun .BAS để dùng lại nhiều lần. Ví dụ chúng ta có một Global Sub như sau:
Public Sub DisplayError(ByVal ErrMess As String )
MsgBox ErrMess, vbCritical + vbOKOnly, "Error"
End Sub
Mỗi lần muốn hiển thị một Error message chúng ta chỉ cần gọi Sub DisplayError với nội dung thông điệp mă không sợ dùng lầm lẫn icon. Sau năy muốn đổi câch hiển thị thông điệp Error chỉ cần edit ở một chỗ. Nếu người sử dụng muốn chúng ta lưu trữ tất cả mọi errors xảy ra lúc run-time, chúng ta chỉ cần thím văi dịng code trong Sub DisplayError để viết thông bâo lỗi văo một tập tin dạng Text.