Cách dùng và giải thích đầy đủ về hộp thoại MsgBox trong VBA Excel

MsgBox là 1 hộp thoại trong VBA Excel để cung cấp một số thông tin, hiển thị một thông báo cho người dùng về chương trình của mình.
Cách dùng và giải thích đầy đủ về hộp thoại MsgBox trong VBA Excel

Hinh anh msgbox trong vba excel

MsgBox trong VBA Excel là gì ?

Trong VBA Excel, mỗi khi bắt lỗi nhập sai dữ liệu, bạn cần hiển thị một thông báo hay một hướng dẫn quy tắc nhập dữ liệu vào trường thông tin đó để người dùng dễ dàng nắm bắt và tương tác. Và để hiển thị thông báo đó, bạn có thể sử dụng hộp thoại MessageBox có sẵn trong VBA Excel. Ngoài hộp thoại Msgbox thì trong VBA Excel còn một hộp thông báo khác là InputBox. Các bạn có thể tham khảo bài viết về hộp thông báo InputBox tại đây.

MsgBox là một hộp thoại trong VBA Excel mà bạn có thể sử dụng để thông báo cho người dùng về chương trình của mình hoặc cung cấp một số thông tin, hiển thị một thông báo tùy chỉnh với một số nút tùy chỉnh như Yes/ No hoặc Ok/Cancel..

Khi hộp thoại MsgBox được hiển thị, mã VBA sẽ bị tạm dừng. Chúng ta sẽ phải click vào nút bất kỳ trong MsgBox để chạy mã VBA còn lại.

Cú Pháp của MsgBox trong VBA Excel.

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

Trong đó:

- Promt (lời nhắc): là một đối số bắt buộc. Nó hiển thị thông báo mà chúng ta nhìn thấy trong MsgBox. Chúng ta sử dụng tối đa 1024 ký tự trong lời nhắc và có thể được sử dụng để hiển thị giá trị của các biến. Trong trường hợp nếu muốn hiển thị lời nhắc bao gồm nhiều dòng, chúng ta hãy sử dụng vbNewLine, chẳng hạn: MsgBox "Dòng 1" & vbNewLine & "Dòng 2". Ngoài ra nếu muốn chúng ta cũng có thể sử dụng ký tự trả về - Chr(13) - hoặc - Chr(10) để chèn một dòng mới vào lời nhắc trong thông báo.

- [buttons] (nút): xác định các nút và biểu tượng nào được hiển thị trong MsgBox. Chẳng hạn, nếu sử dụng vbOkOnly nó sẽ hiển thị nút OK, nếu sử dụng nút vbOKCancel nó sẽ hiển thị cả 2 nút là OK và Cancel.

- [title] (tiêu đề): tại đây chúng ta có thể chỉ định cái gì sẽ hiển thị trong hộp thoại thông báo, nó sẽ được hiển thị trên thanh tiêu đề của MsgBox. Theo mặc định, nó sẽ hiển thị tên của ứng dụng “Microsoft Excel” vì chúng ta đang mở nó trong Excel.

- [helpfile]: Mở file trợ giúp có thể truy cập được khi người dùng nhấn vào nút Help. Nút Help chỉ xuất hiện khi chúng ta sử dụng mã nút. Nếu sử dụng file Help, chúng ta cũng phải chỉ định các đối số ngữ cảnh.

- [context]: là biểu thức số hay Help context number được gán cho chủ đề Help phù hợp.

Lưu ý: Tất cả các đối số trong ngoặc vuông đều là tùy chọn. Chỉ có đối số "prompt" là bắt buộc.

Các hằng của Button (Nút) MsgBox trong VBA Excel.

Trong phần này, chúng ta sẽ đề cập đến các nút khác nhau thường được sử dụng trong MsgBox:

vbOKOnly - chỉ hiển thị nút OK.

vbOKCancel - hiển thị nút OK và Cancel.

vbYesNo - hiển thị các nút Yes / No.

vbYesNoCancel - hiển thị các nút Yes, No và Cancel.

vbAbortRetryIgnore - hiển thị các nút Abort, Retry và Ignore.

vbRetryCancel - hiển thị nút Retry và Cancel.

vbMsgBoxHelpButton - hiển thị nút Trợ giúp.

Các hằng Icon (Biểu Tượng) của MsgBox trong VBA Excel

Ngoài các nút, chúng ta cũng có thể tùy chỉnh các biểu tượng được hiển thị trong hộp thoại thông báo MsgBox.

Dưới đây là danh sách liệt kê mã hiển thị các biểu tượng tương ứng:

vbCritical: hiển thị biểu tượng thông báo quan trọng trong hộp thoại thông báo MsgBox.

vbQuestion: hiển thị biểu tượng dấu hỏi chấm trong MsgBox.

vbExclamation: hiển thị biểu tượng dấu chấm than (biểu tượng cảnh báo) trong MsgBox.

vbInformation: hiển thị biểu tượng thông tin trong MsgBox.

Gán Giá Trị MsgBox Cho Một Biến

Với hàm MsgBox trong Excel, chúng ta có thể quyết định khi người dùng click vào một nút cụ thể bất kỳ nó sẽ thực hiện những gì. Đơn giản là bởi vì mỗi một nút có một giá trị liên quan.

Nếu nhấn vào nút Yes, hàm MsgBox sẽ trả về giá trị (6 hoặc hằng vbYes) mà chúng ta có thể sử dụng trong mã của mình. Tương tự khi nhấn chọn No, nó sẽ trả về giá trị khác (7 hoặc vbNo) mà chúng ta có thể sử dụng trong mã.

Dưới đây là danh sách các giá trị chính xác và hằng được trả về bởi hàm MsgBox:

Hằng vbOK sẽ tương ứng có giá trị là: 1

Hằng vbCancel sẽ tương ứng có giá trị là: 2

Hằng vbAbort sẽ tương ứng có giá trị là: 3

Hằng vbRetry sẽ tương ứng có giá trị là: 4

Hằng vbIgnore sẽ tương ứng có giá trị là: 5

Hằng vbYes sẽ tương ứng có giá trị là: 6

Hằng vbNo sẽ tương ứng có giá trị là: 7

Cách tạo MsgBox trong Excel với VBA

Mở Tab Developer > chọn Trình soạn thảo Visual Basic từ nhóm Code hoặc bạn cũng có thể nhấn tổ hợp phím Alt + F11 để mở.

Hinh anh msgbox trong vba excel 1

Sau khi nhấn Alt + F11, cửa sổ Microsoft VBA (Visual Basic for Applications) xuất hiện. Hãy nhập đoạn code sau:


Private Sub Hop_Thoai_Msg_Box ()
      Dim Result As VbMsgBoxResult
      Result = MsgBox("Chao mung cac ban den voi website cua chung toi" & vbNewLine & "Ban muon tiep tuc ?", vbYesNo + vbDefaultButton2 + vbExclamation, "Day la tieu de")
  If Result = vbYes Then
      MsgBox "Ban da nhan vao nut Yes"
       Else: MsgBox " Ban da nhan vao nut No"
  End If
End Sub

Giải thích đoạn mã trên như sau:

Từ khóa Dim dùng để khai báo biến Result trong VBA

Hàm MsgBox sẽ trả về một đối tượng VbMsgBoxResult, lưu trữ kết quả mà người dùng đã chọn trên hộp thoại vào biến Result.

Hộp thoại MsgBox hiển thị thông báo với lời nhắc "Chao mung cac ban den voi website cua chung toi" và sử dụng vbNewLine để hiển thị lời nhắc ở dòng thứ hai là "Ban muon tiep tuc ?"

Tiêu đề của hộp thoại MsgBox là "Day la tieu de"

Sử dụng hằng vbYesNo để hiển thị các nút Yes và No.

Chúng ta sử dụng hằng vbDefaultButton2 để thiết lập nút thứ hai (nút No) làm nút mặc định. Điều này có nghĩa là nút đã được chọn, sau đó chúng ta nhấn Enter để thực thi nút đó.

Hộp thoại MsgBox sử dụng hằng vbExclamation để hiển thị biểu tượng dấu chấm than (biểu tượng cảnh báo) trong MsgBox.

Trong đoạn mã trên, chúng ta gán giá trị của hàm MsgBox cho biến Result. Khi nhấn chọn nút Yes, biến Result sẽ lấy hằng vbYes (hoặc số 6), khi nhấn chọn No, biến Result lấy hằng vbNo (hoặc số 7).

Sau đó sử dụng cấu trúc If .. Then .. Else để kiểm tra xem biến Result có giữ giá trị vbYes hay không. Nếu có, nó sẽ hiển thị thông báo "bạn đã nhấn vào nút Yes", nếu không thì hiển thị thông báo "bạn đã nhấn vào nút No".

Lưu ý: Khi gán đầu ra MsgBox cho một biến, chúng ta phải đặt các đối số của hàm MsgBox trong dấu ngoặc đơn.

Từ đoạn mã phía trên, chúng ta có thể thấy rằng mã Macro mà đang viết sẽ chỉ hoạt động với trang tính chúng ta đang làm việc.

Bây giờ, chúng ta sẽ chạy đoạn code này bằng cách bấm vào RUN hoặc bấm F5. Như chúng ta có thể thấy trong hình minh họa bên dưới, Hộp thông báo được hiển thị với nút Yes/No và thông báo.

Hinh anh msgbox trong vba excel 2

Đăng nhận xét