Hàm MsgBox trong VBA

Các bài viết trước bạn đọc đã cùng Taimienphi.vn tìm hiểu về hàm TRIM và hàm DIR trong VBA, bài viết dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về hàm MsgBox trong VBA.

Trong VBA, chúng ta có thể sử dụng hàm MsgBox để hiển thị hộp thông báo như hình dưới đây:

ham msgbox trong vba

Hàm MsgBox chỉ được sử dụng để hiển thị hộp thoại thông báo cho người dùng với các thông báo tùy chỉnh hoặc lấy một số thông báo đầu vào cơ bản (chẳng hạn như Yes /No / 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.

Tham khảo tiếp bài viết dưới đây của Taimienphi.vn để tìm hiểu về hàm MsgBox trong VBA, công thức và cách sử dụng hàm nhé.

Cấu tạo hộp thông báo MsgBox trong VBA.

Một hộp thông báo bao gồm các phần dưới đây:

ham msgbox trong vba 2

1. Tiêu đề (title): được sử để hiển thị nội dung thông báo trong hộp thông báo. Nếu không chỉ định bất kỳ thứ gì, trong trường hợp này nó sẽ hiển thị tên ứng dụng là Excel.

2. Lời nhắc (prompt): đây là thông báo mà chúng ta muốn hiển thị. Chúng ta có thể sử dụng để thêm một vài dòng hoặc thậm chí là hiển thị bảng / dữ liệu ở đây.

3. Nút (button): nút OK là mặc định, tuy nhiên nếu muốn chúng ta có thể tùy chỉnh để heienr thị các nút khác như Yes / No, Yes / No / Cancel, Retry / Ignore, ....

4. Biểu tượng đóng: để đóng hộp thông báo, chúng ta click chọn biểu tượng đóng là xong.

Cú pháp hàm MsgBox trong VBA.

Hàm MsgBox có cú pháp tương tự các hàm VBA khác:

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

Trong đó:

- Promt (lời nhắc): là đối số bắt buộc. Nó hiển thị thông báo mà chúng ta nhìn thấy trong MsgBox. Trong ví dụ ở trên, prompt là "This is a sample MsgBox". Lời nhắc giới hạn tối đa 1024 ký tự, và có thể 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 cũng có thể làm được điều này.

- [buttons] (nút): xác định các nút và biểu tượng nào được hiển thị trong MsgBox. Cho ví dụ, 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 nào để 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. Nếu không chỉ định bất cứ thứ gì, nó sẽ hiển thị tên ứng dụng.

- [helpfile]: chúng ta có thể chỉ định file trợ giúp có thể truy cập được khi người dùng click chọn 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 đối số context.

- [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 nút (Button) MsgBox trong VBA.

Trong phần tiếp theo dưới đây Taimienphi.vn sẽ giới thiệu cho bạn các loại nút khác nhau có thể sử dụng trong MsgBox VBA.

Dưới đây là bảng danh sách các hằng nút có thể sử dụng trong MsgBox VBA:

ham msgbox trong vba 3

Lưu ý: Khi chọn nút OK, mã sẽ tiếp tục chạy, còn nếu click chọn Cancel, mã sẽ dừng lại.

Nút vbOKOnly (mặc định)

Nếu chỉ sử dụng lời nhắc và không chỉ định bất kỳ đối số nào, hộp thoại thông báo mặc định sẽ có dạng như dưới đây:

ham msgbox trong vba 4

Dưới đây là đoạn mã hiển thị hộp thoại thông báo này:

Sub DefaultMsgBox()

MsgBox "This is a sample box"

End Sub

Lưu ý chuỗi văn bản phải được đặt trong dấu ngoặc kép.

Ngoài ra chúng ta cũng có thể sử dụng hằng của nút vbOKOnly ngay cả khi không chỉ định bất kỳ đối số nào, nó được coi là mặc định.

Nút OK & Cancel

Nếu chỉ muốn hiển thị nút OK và nút Cancel, chúng ta sử dụng hằng vbOKCancel.

ham msgbox trong vba 5

Sub MsgBoxOKCancel()

MsgBox "Want to Continue?", vbOKCancel

End Sub

Nút Abort, Retry và Ignore

Sử dụng hằng vbAbortRetryIgnore để hiển thị các nút Abort, Retry và Ignore.

ham msgbox trong vba 6

Dưới đây là đoạn mã hiển thị hộp thoại thông báo này:

Sub MsgBoxAbortRetryIgnore()

MsgBox "What do you want to do?", vbAbortRetryIgnore

End Sub

Nút Yes và No

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

Sub MsgBoxYesNo()

MsgBox "Should we stop?", vbYesNo

End Sub

ham msgbox trong vba 7

Nút Retry và Cancel

Chúng ta sử dụng hằng vbRetryCancel để hiển thị các nút Retry và Cancel.

Sub MsgBoxRetryCancel()

MsgBox "What do you want to do next?", vbRetryCancel

End Sub

ham msgbox trong vba 8

Nút Help

Sử dụng hằng vbMsgBoxHelpButton để hiển thị nút Help. Ngoài ra chúng ta có thể sử dụng nó với các hằng của các nút khác.

Sub MsgBoxRetryHelp()

MsgBox "What do you want to do next?", vbRetryCancel + vbMsgBoxHelpButton

End Sub

ham msgbox trong vba 9

Lưu ý: trong đoạn mã trên chúng ta kết hợp 2 hằng của 2 nút khác nhau (vbRetryCancel và vbMsgBoxHelpButton). Phần đầu tiên hiển thị các nút Retry và Cancel, phần thứ 2 hiển thị nút Help.

Thiết lập nút mặc định

Chúng ta có thể sử dụng hằng vbDefaultButton1 để thiết lậpnút đầu tiên 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 đó.

Dưới đây là đoạn mã để thiết lập nút thứ 2 (nút No) làm nút mặc định:

Sub MsgBoxOKCancel()

MsgBox "What do you want to do next?", vbYesNoCancel + vbDefaultButton2

End Sub

ham msgbox trong vba 10

Trong hầu hết các trường hợp, nút ngoài cùng bên trái là nút mặc định. Ngoài ra chúng ta có thể chọn các nút khác để lmaf nút mặc định bằng cách sử dụng vbDefaultButton2, vbDefaultButton3 và vbDefaultButton4.

Các hằng của biểu tượng (icon) của MsgBox trong VBA

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à bảng danh sách liệt kê mã hiển thị các biểu tượng tương ứng:

ham msgbox trong vba 11

Biểu tượng thông báo quan trọng

Nếu muốn hiển thị biểu tượng thông báo quan trọng trong hộp thoại thông báo MsgBox, chúng ta sử dụng hằng vbCritical. Ngoài ra chúng ta có thể kết hợp hằng này với các hằng của các biểu tượng khác bằng cách thêm dấu + giữa các mã.

Cho ví dụ, đoạn mã dưới đây sẽ hiển thị nút OK mặc định với biểu tượng thông báo quan trọng:

Sub MsgBoxCriticalIcon()
MsgBox "This is a sample box", vbCritical
End Sub

ham msgbox trong vba 12

Nếu muốn hiển thị biểu tượng thông báo quan trọng cùng các nút Yes và No, bạn sử dụng đoạn mã dưới đây:

Sub MsgBoxCriticalIcon()
MsgBox "This is a sample box", vbYesNo + vbCritical
End Sub

ham msgbox trong vba 13

Biểu tượng dấu hỏi chấm

Để hiển thị biểu tượng dấu hỏi chấm trong MsgBox, chúng ta sử dụng hằng vbQuestion:

Sub MsgBoxQuestionIcon()
MsgBox "This is a sample box", vbYesNo + vbQuestion
End Sub

ham msgbox trong vba 14

Biểu tượng cảnh báo

Nếu muốn hiển thị biểu tượng dấu chấm than (biểu tượng cảnh báo) trong MsgBox, chúng ta sử dụng hằng vbExclamation.

Sub MsgBoxExclamationIcon()
MsgBox "This is a sample box", vbYesNo + vbExclamation
End Sub

ham msgbox trong vba 15

Biểu tượng thông tin

Để hiển thị biểu tượng thông tin trong MsgBox, chúng ta sử dụng hằng vbInformation:

Sub MsgBoxInformationIcon()
MsgBox "This is a sample box", vbYesNo + vbInformation
End Sub

ham msgbox trong vba 16

Tùy chỉnh tiêu đề và lời nhắc trong hộp thoại thông báo MsgBox

Bằng cách sử dụng MsgBox, chúng ta có thể tùy chỉnh tiêu đề (title) và lời nhắc (prompt) trong hộp thoại thông báo.
Trong trường hợp nếu không chỉ định đối số tiêu đề, MsgBox sẽ tự động sử dụng tiêu đề của ứng dụng (trong trường hợp này là Excel).
Để chỉ định tiêu đề mà bạn chỉ định, sử dụng đoạn mã dưới đây:

Sub MsgBoxInformationIcon()
MsgBox "Do you want to continue?", vbYesNo + vbQuestion, "Step 1 of 3"
End Sub

ham msgbox trong vba 17

Tương tự, chúng ta cũng có thể tùy chỉnh các lời nhắc trong thông báo, và có thể thêm ngắt dòng.

ham msgbox trong vba 18

Trong đoạn mã dưới đây Taimienphi.vn đã thêm một ngắt dòng bằng cách sử dụng vbNewLine:

Sub MsgBoxInformationIcon()

MsgBox "Do you want to continue?" & vbNewLine & "Click Yes to Continue", vbYesNo + vbQuestion, "Step 1 of 3"

End Sub

ham msgbox trong vba 19

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.

Lưu ý: Chúng ta chỉ có thể thêm một dòng mới vào lời nhắc chứ không thể thêm vào tiêu đề của thông báo.

Gán giá trị MsgBox cho một biến

Trong trường hợp nếu click vào nút bất kỳ nhưng không hoạt động.

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 click 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 click 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à bảng danh sách các giá trị chính xác và hằng được trả về bởi hàm MsgBox:

ham msgbox trong vba 20

Tiếp theo Taimienphi.vn sẽ giới thiệu cho bạn cách kiểm soát mã macro VBA dựa trên nút mà người dùng click vào.

Trong đoạn mã dưới đây, nếu người dùng click chọn Yes, nó sẽ hiển thị thông báo "bạn đã click chọn Yes", còn nếu click chọn No, nó sẽ hiển thị thông báo "bạn đã click chọn No".

Sub MsgBoxInformationIcon()
Result = MsgBox("Do you want to continue?", vbYesNo + vbQuestion)
If Result = vbYes Then
MsgBox "You clicked Yes"
Else: MsgBox "You clicked No"
End If
End Sub

ham msgbox trong vba 21

Trong đoạn mã trên, Taimienphi.vn gán giá trị của hàm MsgBox cho biến Result. Khi click chọn nút Yes, biến Result sẽ lấy hằng vbYes (hoặc số 6), khi click 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 đã click chọn Yes", nếu không thì hiển thị thông báo "bạn đã click chọn No".

Chúng ta có thể sử dụng cùng một khái niệm để chạy mã nếu người dùng click chọn Yes, và thoát sub khi click chọn 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.

Cho ví dụ, trong dòng Result = MsgBox("Do you want to continue?", vbYesNo + vbQuestion), chúng ta có thể thấy các đối số nằm trong ngoặc đơn.

https://thuthuat.taimienphi.vn/ham-msgbox-trong-vba-53298n.aspx
Bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về hàm MsgBox trong VBA. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu thêm về hàm DIR trong VBA. Nếu có thắc mắc hoặc câu hỏi nào cần giải đáp, bạn đọc có thể để lại trong phần bình luận bên dưới bài viết nhé.

Tác giả: Thuỳ Chi     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Cách vẽ đồ thị trong Excel
Cách đếm số từ trong Excel, trong ô, hàng, cột
Cách tính ngày tháng năm trong Excel
Cách tính số ngày bằng Excel
Cách xoay khổ giấy trong Excel
Từ khoá liên quan:

Hàm MsgBox trong VBA

, VBA, hàm MsgBox,

SOFT LIÊN QUAN
  • Tự học Excel

    Tài liệu tự học Excel 2007, 2010, 2013, 2016

    Tài liệu tự học Excel được TAIMIENPHI.VN sưu tầm và giới thiệu đến bạn đọc cung cấp những kiến thức từ cơ bản đến nâng cao giúp người học nắm và sử dụng Excel thành thạo để phục vụ hiệu quả hơn cho các công việc của mình ...

Tin Mới

  • Cách định dạng đường viền cho bảng Excel chi tiết nhất

    Thao tác chèn bảng trên Excel vô cùng quen thuộc với bất kỳ ai khi làm việc với công cụ văn phòng. Chúng ta có thể tùy ý thiết kế giao diện, làm bảng nổi bật hơn trong nội dung bằng cách định dạng đường viền cho bảng Excel. Vậy bạn đã biết cách để định dạng đường viền cho bảng trên ứng dụng Excel chưa.

  • Cách chèn dấu ngoặc trong Excel nhanh nhất

    Nếu bạn đang sử dụng Excel muốn chèn dấu ngoặc để hoàn thiện các biểu thức toán học, đang gặp khó khăn khi không thấy dấu ngoặc. Hãy theo dõi bài viết dưới đây để có thể chèn dấu ngoặc trong Excel nhanh chóng, dễ dàng

  • Cách tạo lịch, Calendar trên Google Sheets nhanh chóng

    Cách tạo lịch trên Google Sheets giúp bạn đọc dễ dàng tạo ra một bảng tính bao gồm các ngày tháng năm để điền các thông tin quan trọng, tạo lời nhắc cho bản thân. Việc tạo lịch trên Google Sheets sẽ hỗ trợ bạn đọc rất nhiều trong công việc giúp bạn sắp xếp công việc, lịch hẹn dễ dàng hơn.

  • Ai sẽ trở thành sát thủ zombie trong Truy Kích, giải đấu của Jerry Gaming?

    Là một YouTuber khá nổi trong cộng đồng Truy kích Jerry Gaming thường xuyên tổ chức các giải đấu offline cho fan hâm mộ. Và tới đây giải đấu Sát Thủ Zombie được khởi tranh và ai sẽ giành ngôi vị cao nhất?