Đoạn code dưới đây sẽ hiển thị thông báo ra giữa màn hình là "tuhocvba.net"
và nó chỉ biến mất khi bạn ấn vào phím OK.
Nếu người dùng không ấn vào phím OK thì điều gì sẽ xảy ra? Hộp thoại này cứ đứng đó và không chịu biến mất đi! Muốn nó biến mất, người dùng phải ấn vào OK.
Vậy thì nếu chúng ta muốn nó tự động biến mất sau một khoảng thời gian nhất định thì phải làm thế nào?
Thật đáng tiếc là Excel VBA không cung cấp cho chúng ta hàm tiện lợi như thế.
Tuy nhiên chúng ta có thể sử dụng Windows Scripting Host(WSH) để làm việc này.
Popup của WSH sẽ hiển thị ra và tự động biến mất sau khoảng thời gian nhất định. Khoảng thời gian này chúng ta có thể chỉ định tùy ý.
Sau đây hãy xem đoạn code mẫu dưới đây:
Tôi đã thí nghiệm code trên và thấy đúng là hộp thoại cảnh báo đã tự động close. Khoảng thời gian không chính xác 5s, có lẽ là khoảng 6-7s. Theo lý thuyết thì sẽ đóng sau 5s, nếu ai giải thích giúp tôi điều này thì tôi rất biết ơn.
Cấu trúc của Popup được mô tả như sau:
WSH.Popup(strNoiDungCanhBao,[nSecondsToWait],[strTitle],[nType])
Tất nhiên, trước khoảng thời gian mà bạn chỉ định sẽ đóng hộp thoại tự động, nếu người dùng ấn vào nút bấm trên hộp thoại thì hộp thoại đó cũng sẽ biến mất.
Giả sử bạn chỉ định sau 5s thì hộp thoại tự động đóng. Nhưng ở giây thứ 3, người dùng ấn OK thì lập tức hộp thoại sẽ bị đóng.
Tiếp theo tôi diễn giải tham số nType :
Chúng ta thấy rằng các hằng số vbYesNo , vbQuestion ,... giống với hàm
Để biết người dùng ấn vào nút bấm nào trên hộp thoại cảnh báo của phương thức Popup-điều này cũng tương tự như
Chúng ta thấy rằng nó cũng giống với các hằng số của hàm
Như vậy, qua bảng trên, chúng ta hiểu thêm về đoạn code mà Admin tuhocvba hỗ trợ bạn @TranTrinh .
Nếu người dùng ấn vào phím YES (=6) thì ghi vào ô A1 giá trị 123.
Nguồn tham khảo và dịch:
Ngoài ứng dụng tự động đóng hộp thoại,
Mã:
Sub Sample()
MsgBox "tuhocvba.net"
End Sub
Bạn cần đăng nhập để thấy đính kèm
và nó chỉ biến mất khi bạn ấn vào phím OK.
Nếu người dùng không ấn vào phím OK thì điều gì sẽ xảy ra? Hộp thoại này cứ đứng đó và không chịu biến mất đi! Muốn nó biến mất, người dùng phải ấn vào OK.
Vậy thì nếu chúng ta muốn nó tự động biến mất sau một khoảng thời gian nhất định thì phải làm thế nào?
Thật đáng tiếc là Excel VBA không cung cấp cho chúng ta hàm tiện lợi như thế.
Tuy nhiên chúng ta có thể sử dụng Windows Scripting Host(WSH) để làm việc này.
Popup của WSH sẽ hiển thị ra và tự động biến mất sau khoảng thời gian nhất định. Khoảng thời gian này chúng ta có thể chỉ định tùy ý.
Sau đây hãy xem đoạn code mẫu dưới đây:
Mã:
Sub Sample2()
Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
WSH.Popup "Se tu dong Close sau 5 giay", 5, "Title", vbInformation
Set WSH = Nothing
End Sub
Cấu trúc của Popup được mô tả như sau:
WSH.Popup(strNoiDungCanhBao,[nSecondsToWait],[strTitle],[nType])
Tên tham số | Ý nghĩa |
---|---|
strNoiDungCanhBao | Đây là nội dung cảnh báo, bạn nhất định phải chỉ định tham số này, không được lược bỏ. |
nSecondsToWait | Thời gian để tự động đóng hộp thoại (đơn vị: giây ). Bạn có thể lược bỏ tham số này. |
strTitle | Tiêu đề hộp thoại cảnh báo, có thể lược bỏ tham số này. |
nType | Chủng loại icon và nút bấm. Bạn có thể lược bỏ tham số này. |
Giả sử bạn chỉ định sau 5s thì hộp thoại tự động đóng. Nhưng ở giây thứ 3, người dùng ấn OK thì lập tức hộp thoại sẽ bị đóng.
Tiếp theo tôi diễn giải tham số nType :
Giá trị | Tên hằng số trong VBA | Ý nghĩa |
---|---|---|
0 | vbOKOnly | Hiển thị nút bấm OK. |
1 | vbOKCancel | Hiển thị nút bấm OK và Cancel |
2 | vbAbortRetryIgnore | Hiển thị nút bấm Abort và Retry và Ignore. Abort là dừng giữa chừng. Retry là cố chạy lại lần nữa. Ignore là phớt lờ. |
3 | vbYesNoCancel | Hiển thị nút bấm Yes và No và Cancel |
4 | vbYesNo | Hiển thị nút bấm Yes và No |
5 | vbRetryCancel | Hiển thị nút bấm Retry và Cancel |
16 | vbCritical |
Bạn cần đăng nhập để thấy đính kèm
|
32 | vbQuestion |
Bạn cần đăng nhập để thấy đính kèm
|
48 | vbExclamation |
Bạn cần đăng nhập để thấy đính kèm
|
64 | vbInformation |
Bạn cần đăng nhập để thấy đính kèm
|
Chúng ta thấy rằng các hằng số vbYesNo , vbQuestion ,... giống với hàm
Bạn cần đăng nhập để thấy link
.Để biết người dùng ấn vào nút bấm nào trên hộp thoại cảnh báo của phương thức Popup-điều này cũng tương tự như
Bạn cần đăng nhập để thấy link
, ta có bảng dưới đây:Giá trị | Tên hằng số trong VBA | Nút bấm mà người dùng đã nhấn là |
---|---|---|
1 | vbOK | Người dùng ấn vào nút OK |
2 | vbCancel | Người dùng ấn vào nút Cancel |
3 | vbAbort | Người dùng ấn vào nút Abort (dừng giữa chừng) |
4 | vbRetry | Người dùng ấn vào nút Retry (chạy lại) |
5 | vbIgnore | Người dùng ấn vào nút Ignore (phớt lờ) |
6 | vbYes | Người dùng ấn vào nút Yes |
7 | vbNo | Người dùng ấn vào nút No |
Chúng ta thấy rằng nó cũng giống với các hằng số của hàm
Bạn cần đăng nhập để thấy link
. Khi vượt quá thời gian tự động đóng hộp thoại, giá trị trả về là -1.Như vậy, qua bảng trên, chúng ta hiểu thêm về đoạn code mà Admin tuhocvba hỗ trợ bạn @TranTrinh .
Mã:
Sub Sample2()
Dim wsh As Object, msg As String
Set wsh = CreateObject("WScript.Shell")
msg = "tuhocvba"
If wsh.Popup(msg, 5, "Tieude", 4) = 6 Then Range("A1") = 123
End Sub
Nguồn tham khảo và dịch:
Bạn cần đăng nhập để thấy link
Ngoài ứng dụng tự động đóng hộp thoại,
Bạn cần đăng nhập để thấy link
, chúng ta đã biết bạn @NhanSu đã chỉ ra rằng có thể ứng dụng WSH POPUP để hiển thị hộp thoại mà nội dung là tiếng việt có dấu.