Có Không Hộp thư (Msgbox) - Ví dụ về mã VBA

Hướng dẫn này sẽ trình bày cách sử dụng Hàm MsgBox của VBA để hiển thị hộp thư cho người dùng (bao gồm Hộp thư YesNo). Bạn cũng có thể quan tâm đến bài viết của chúng tôi về InputBoxes.

Hàm MsgBox VBA

Trong VBA, thật dễ dàng để hiển thị một MsgBox đơn giản:

1 MsgBox "Đây là một hộp thư"

Tuy nhiên, bạn có thể làm được nhiều điều hơn là hiển thị một hộp thông báo OK đơn giản. Hãy nhanh chóng xem xét ví dụ phức tạp trước khi chúng ta đi sâu vào chi tiết cụ thể…

VBA Có không có hộp thông báo

Dưới đây, chúng tôi sẽ tạo một hộp thông báo với:

  • Tiêu đề "Tiêu đề hộp thư" và lời nhắc "Văn bản"
  • Một biểu tượng dấu chấm hỏi
  • Tùy chọn Có / Không thay vì "OK" đơn giản
  • Nút mặc định = 'Không'
123 Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Văn bản", vbQuestion + vbYesNo + vbDefaultButton2, "Tiêu đề hộp thư")

Hộp thư sẽ trả về vbYes hoặc vbNo tùy thuộc vào sự lựa chọn của người dùng. Sau đó, bạn có thể thực hiện các hành động khác nhau dựa trên lựa chọn:

12345 Nếu answer = vbYes thìMsgBox "Có"KhácMsgBox "Không"Kết thúc nếu

Trong phần tiếp theo, chúng tôi sẽ chỉ cho bạn tất cả các tùy chọn có sẵn cho bạn khi tạo hộp thư. Sau đó, chúng tôi sẽ giới thiệu cho bạn cú pháp của Hàm MsgBox và cuối cùng đi qua các ví dụ về hộp thông báo khác.

Tùy chọn hộp thư VBA

Hãy nhìn vào hình ảnh bên dưới. Tại đây bạn sẽ thấy (gần như) tất cả các tùy chọn có sẵn cho bạn khi tạo hộp thư. Chú ý đến các biểu tượng và các nút khác nhau.

Đây là ảnh chụp màn hình của “MessageBox Builder” từ Phần bổ trợ VBA Premium của chúng tôi: AutoMacro. Trình tạo MessageBox cho phép bạn nhanh chóng thiết kế hộp thư mong muốn và chèn mã vào mô-đun mã của bạn. Nó cũng chứa nhiều trình xây dựng mã khác, một thư viện mã VBA mở rộng và một loạt các công cụ mã hóa. Đó là điều bắt buộc đối với bất kỳ nhà phát triển VBA nào.

Cú pháp của hàm MsgBox

MsgBox (dấu nhắc [, các nút] [, tiêu đề] [, tệp trợ giúp, ngữ cảnh])

lời nhắc (Bắt buộc) - Đây là văn bản hộp tin nhắn chính.

nút - Chọn các nút để hiển thị. Nếu bỏ qua, "OKonly". Tại đây bạn cũng có thể chỉ định biểu tượng sẽ hiển thị và nút mặc định.

chức vụ - Tiêu đề ở đầu hộp thư. Nếu bỏ qua, tên của ứng dụng hiện tại sẽ được hiển thị (ví dụ: Microsoft Excel).

hồ sơ trợ giúp - Chỉ định tệp trợ giúp có thể được truy cập khi người dùng nhấp vào nút ‘Trợ giúp’. Nếu được chỉ định, thì bạn cũng phải thêm ngữ cảnh (bên dưới)

định nghĩa bài văn - Biểu thức số đại diện cho số ngữ cảnh Trợ giúp được chỉ định cho chủ đề Trợ giúp thích hợp.

Bạn có thể bỏ qua các đối số trong tệp trợ giúp và ngữ cảnh. Tôi chưa bao giờ thấy chúng được sử dụng.

Tùy chỉnh Tiêu đề và Lời nhắc Hộp Thư

Chức năng MsgBox cho phép bạn tùy chỉnh tiêu đề và lời nhắc như sau:

1 Msgbox "Lời nhắc" ,, "Tiêu đề"

Một vi dụ khac:

123 Sub MsgBoxPromptTitle ()MsgBox "Hoàn thành Bước 1. Nhấp OK để chạy bước 2." ,, "Bước 1/5"Kết thúc Sub

Quan trọng! Bạn phải nhớ bao quanh văn bản của bạn bằng các trích dẫn.

MessageBox LineBreaks

Bạn cũng có thể thêm ngắt dòng vào lời nhắc hộp thư của mình bằng ‘vbNewLine’.

123 Sub MsgBoxPromptTitle_NewLine ()MsgBox "Hoàn thành Bước 1." & vbNewLine & "Nhấp OK để chạy Bước 2.", "Bước 1/5"Kết thúc Sub

Lưu ý rằng chúng tôi sử dụng ký hiệu & để nối văn bản với nhau. Bạn có thể tìm hiểu thêm về cách sử dụng & với văn bản và các tùy chọn khác để chèn dấu ngắt dòng trong bài viết của chúng tôi về cách nối văn bản.

MsgBox các biểu tượng

VBA cung cấp cho bạn khả năng thêm một trong bốn biểu tượng được tạo sẵn vào hộp thư của bạn:

Biểu tượng không đổi Biểu tượng
vbInformation
vbCritical
vbQuestion
vbExclamation

Hằng số Biểu tượng phải được đặt trong đối số nút:

123 Sub MsgBoxQuestionIcon ()MsgBox "Ví dụ câu hỏi", vbQuestionKết thúc Sub

Thao tác này sẽ tạo hộp thông báo ‘OK’ mặc định với biểu tượng Câu hỏi:

Lưu ý cách khi bạn nhập, VBA Editor sẽ hiển thị cho bạn các tùy chọn có sẵn cho bạn:

Điều này rất hữu ích vì bạn không cần phải nhớ cú pháp hoặc tên chính xác của các biểu tượng hoặc nút.

Bây giờ chúng ta sẽ demo từng biểu tượng hộp tin nhắn:

Các biểu tượng MsgBox - Thông tin

123 Sub MsgBoxInformationIcon ()MsgBox "Ví dụ về thông tin", vbInformationKết thúc Sub

Biểu tượng MsgBox - Quan trọng

123 Sub MsgBoxCriticalIcon ()MsgBox "Ví dụ quan trọng", vbCriticalKết thúc Sub

Các biểu tượng MsgBox - Câu hỏi

123 Sub MsgBoxQuestionIcon ()MsgBox "Ví dụ câu hỏi", vbQuestionKết thúc Sub

Các biểu tượng MsgBox - Dấu chấm than

123 Sub MsgBoxExclamationIcon ()MsgBox "Ví dụ về câu cảm thán", vbExclamationKết thúc Sub

Dưới đây chúng ta sẽ nói về việc tạo các hộp thông báo với các bố cục nút khác nhau. Nếu bạn chọn một loại hộp thông báo khác, bạn sẽ cần thêm loại biểu tượng vào sau các nút bằng cách sử dụng dấu “+”:

123 Sub MsgBoxQuestionIcon ()MsgBox "Bạn có muốn tiếp tục không?", VbOKCancel + vbQuestionKết thúc Sub

Biến MsgBox

Cho đến nay chúng tôi đã làm việc chủ yếu với hộp thông báo ‘OK’ mặc định. Hộp thông báo OK chỉ có một tùy chọn: Nhấn ‘OK’ để mã tiếp tục. Tuy nhiên, bạn cũng có thể chỉ định các nhóm nút khác: OK / Cancel, Yes / No, v.v.

Trong trường hợp đó, bạn sẽ muốn thực hiện các hành động khác nhau dựa trên nút nào được nhấn. Hãy xem một ví dụ.

Đây là hộp thông báo chúng tôi sẽ tạo:

Đây là toàn bộ mã (chúng tôi sẽ chia nhỏ nó tiếp theo):

123456789101112 Sub MsgBoxVariable ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Bạn có muốn tiếp tục không?", vbQuestion + vbYesNo)Nếu answer = vbYes thìMsgBox "Có"KhácMsgBox "Không"Kết thúc nếuKết thúc Sub

Đầu tiên, chúng tôi gán đầu ra hộp thư cho một biến số nguyên.

123 Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Bạn có muốn tiếp tục không?", vbQuestion + vbYesNo)

Tiếp theo, chúng tôi sử dụng If-Else để xác định việc cần làm dựa trên nút nào được nhấn:

12345 Nếu answer = vbYes thìMsgBox "Có"KhácMsgBox "Không"Kết thúc nếu

Hàm MsgBox trả về một giá trị nguyên (từ 1-7) vì vậy chúng tôi xác định biến là một kiểu số nguyên. Tuy nhiên, thay vì tham chiếu đến số nguyên, bạn có thể tham chiếu đến một hằng số (ví dụ: vbOK, vbCancel, v.v.). Nhìn vào bảng này để xem tất cả các tùy chọn:

Cái nút Hằng số Giá trị
VÂNG vbOK 1
Hủy bỏ vb Hủy 2
Huỷ bỏ vbAbort 3
Thử lại vbRetry 4
Phớt lờ vbIgnore 5
đúng vbYes 6
Không vbNo 7

Bây giờ chúng ta sẽ demo từng nhóm nút:

Hộp tin nhắn OK - vbOKOnly

Đây là hộp thư VBA tiêu chuẩn.

123456 Sub MsgBox_OKOnly ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Ví dụ OKOnly", vbOKOnly)Kết thúc Sub

OK Hủy hộp tin nhắn - vbOKCancel

123456789101112 Sub MsgBox_OKCancel ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("OK Ví dụ Hủy", vbOKCancel)Nếu answer = vbOK thìMsgBox "OK"KhácMsgBox "Hủy"Kết thúc nếuKết thúc Sub

Có Không Hộp thư - vbYesNo

123456789101112 Sub MsgBox_YesNo ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Có Không Ví dụ", vbYesNo)Nếu answer = vbYes thìMsgBox "Có"KhácMsgBox "Không"Kết thúc nếuKết thúc Sub

Có Không Hủy Hộp thư - vbYesNoCancel

1234567891011121314 Sub MsgBox_YesNoCancel ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Có Không, Ví dụ về Hủy", vbYesNoCancel)Nếu answer = vbYes thìMsgBox "Có"ElseIf answer = vbNo Sau đóMsgBox "Không"KhácMsgBox "Hủy"Kết thúc nếuKết thúc Sub

Hủy bỏ Thử lại Hộp thông báo Bỏ qua - vbAbortRetryIgnore

1234567891011121314 Sub MsgBox_AbortRetryIgnore ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Bỏ qua Ví dụ Bỏ qua Thử lại", vbAbortRetryIgnore)Nếu answer = vbAbort ThìMsgBox "Hủy bỏ"ElseIf answer = vbRetry Sau đóMsgBox "Thử lại"KhácMsgBox "Bỏ qua"Kết thúc nếuKết thúc Sub

Thử lại Hộp thư Hủy - vbRetryCancel

123456789101112 Sub MsgBox_RetryCancel ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Thử lại Ví dụ về Hủy", vbRetryCancel)Nếu answer = vbRetry Sau đóMsgBox "Thử lại"KhácMsgBox "Hủy"Kết thúc nếuKết thúc Sub

Ví dụ về VBA MessageBox

Xác nhận hộp thông báo trước khi chạy Macro

Mã này sẽ hiển thị hộp Có Không Thông báo trước khi gọi macro. Nếu Có được nhấp vào, macro được gọi, nếu Không được nhấp vào, Macro không chạy.

12345678 Sub Msgbox_BeforeRunning ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Bạn có muốn chạy Macro1 không?", vbQuestion + vbYesNo)Nếu answer = vbYes thì hãy gọi Macro1Kết thúc Sub

Hộp thư Có / Không - Thoát Sub

Tại đây chúng tôi sẽ xác nhận với người dùng xem có tiếp tục chạy macro hay không. Nếu Không được nhấp vào, mã sẽ thoát khỏi phụ, nếu không quy trình sẽ tiếp tục.

12345678910 Sub Msgbox_BeforeRunning ()Dim câu trả lời dưới dạng số nguyênanswer = MsgBox ("Bạn có muốn tiếp tục không?", vbQuestion + vbYesNo)If answer = vbNo Then Exit Sub'Một số mãKết thúc Sub

Hộp thông báo VBA trong Access VBA

Tất cả các ví dụ trên đều hoạt động hoàn toàn giống nhau trong Access VBA cũng như trong Excel VBA.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave