Tin tức mới

VBA – Message Box (MsgBox)

1. Message Box là gì?

Message Box (MsgBox) là hộp thoại hiển thị thông báo cho người dùng trong VBA.
👉 Dùng để:
Thông báo kết quả
Cảnh báo lỗi
Hỏi người dùng (Yes/No)
Debug code

2. Cú pháp cơ bản


MsgBox(prompt, buttons, title)

Trong đó:
prompt: nội dung hiển thị
buttons: kiểu nút + icon
title: tiêu đề hộp thoại

3. Ví dụ đơn giản


Sub TestMsgBox()
    MsgBox "Hello VBA!"
End Sub
MsgBox đơn giản
MsgBox đơn giản

4. Thêm tiêu đề


Sub TestMsgBox()
   MsgBox "Xin chào", , "Thông báo"
End Sub
MsgBox thêm thông báo
MsgBox thêm thông báo

5. Các loại nút (Buttons)

Hằng số Ý nghĩa
vbOKOnly Chỉ nút OK
vbYesNo Yes / No
vbYesNoCancel Yes / No / Cancel
vbRetryCancel Retry / Cancel

Ví dụ:


Sub TestMsgBox()
  MsgBox "Ban co muon tiep tuc?", vbYesNo, "Xac nhan"
End Sub
MsgBox với button
MsgBox với button

6. Icon trong Message Box

Hằng số Ý nghĩa
vbInformation ℹ️ Thông tin
vbExclamation ⚠️ Cảnh báo
vbCritical ❌ Lỗi
vbQuestion ❓ Câu hỏi

Ví dụ:


Sub TestMsgBox()
 MsgBox "Loi xay ra!", vbCritical, "Error"
End Sub
MsgBox với icon
MsgBox với icon

7. Kết hợp Buttons + Icon

👉 Dùng dấu +


Sub TestMsgBox()
 MsgBox "Ban chac chan xoa?", vbYesNo + vbQuestion, "Xac nhan"
End Sub
MsgBox icon và button
MsgBox icon và button

8. Nhận giá trị người dùng chọn


Sub AskUser()
    Dim result As VbMsgBoxResult
    
    result = MsgBox("Ban co muon tiep tuc?", vbYesNo + vbQuestion, "Hoi")
    
    If result = vbYes Then
        MsgBox "Ban chon YES"
    Else
        MsgBox "Ban chon NO"
    End If
End Sub
Nhận giá trị người dùng chọn
Nhận giá trị người dùng chọn
Nhận giá trị người dùng chọn-Yes
Nhận giá trị người dùng chọn-Yes
Nhận giá trị người dùng chọn-No
Nhận giá trị người dùng chọn-No

9. Ví dụ thực tế trong Excel

Kiểm tra ô trước khi xử lý


Sub CheckCell()
    If Range("A1").Value = "" Then
        MsgBox "O A1 dang trong!", vbExclamation, "Canh bao"
        Exit Sub
    End If
    
    MsgBox "Du lieu hop le!", vbInformation
End Sub
MsgBox Kiểm tra dữ liệu
MsgBox Kiểm tra dữ liệu

Xác nhận trước khi xóa dữ liệu


Sub DeleteData()
    Dim confirm As VbMsgBoxResult
    
    confirm = MsgBox("Ban co chan muon xoa?", vbYesNo + vbCritical, "Canh bao")
    
    If confirm = vbYes Then
        Range("A1:A10").ClearContents
        MsgBox "Da xoa!"
    Else
        MsgBox "Da huy thao tac"
    End If
End Sub
Xác nhận xóa từ người dùng- Ban co muon xoa
Xác nhận xóa từ người dùng- Ban co muon xoa
Xác nhận xóa từ người dùng- Đồng ý-Dữ liệu vùng được chọn đã được xóa
Xác nhận xóa từ người dùng- Đồng ý-Dữ liệu vùng được chọn đã được xóa

10. Mẹo nâng cao

Xuống dòng trong MsgBox


Sub TestMsgBox()
    MsgBox "Dong 1" & vbNewLine & "Dong 2"
End Sub
Xuống dòng trong MsgBox
Xuống dòng trong MsgBox

Hiển thị nhiều thông tin


Sub TestMsgBox()
MsgBox "Ten: " &  Range("A1").Value&  vbNewLine & _
       "Tuoi: " &  Range("B1").Value
End Sub
MsgBox hiển thị nhiều thông tin
MsgBox hiển thị nhiều thông tin

Leave a Reply

Your email address will not be published. Required fields are marked *