| Vị trí | Tham số | Chức năng |
|---|---|---|
1 | Message | Tin nhắn thông báo |
2 | title | Tiêu đề thông báo |
3 | Icon | Icon thông báo beNone = 0 không có icon beInformation = 1 thông tin beWarning = 2 Cảnh báo beError = 3 Lỗi beNoSound = &H10 Không có âm thanh |



Thử trên máy mình, thì bị lỗi tiếng Việt:Hôm nay tôi chia sẻ với các bạn hai hàm MsgBox và InputBox mới này nhầm thay thế hàm mặc định trong VBA, được cải tiến để phù hợp với những nhu cầu người sử dụng, như: tiếng Việt, nhập ẩn giá trị, đếm ngược. Kỹ thuật viết mã để đếm ngược đóng Box rất linh hoạt khi đặt giá trị mặc định nút.
Mã được viết tận dụng Classes để tiết kiệm bộ nhớ, nhầm giảm quá trình thông dịch mã không cần thiết làm tổn hao tài nguyên máy tính.
Hướng dẫn sử dụng:
(Lưu ý: hàm mới nhưng thứ tự các tham số Parameters giống với hàm của VB)Hàm MsgBox mới:
Hàm MsgBox mới này sẽ nhập được chuỗi Unicode và đếm ngược thời gian, với việc đặc thời gian và giá trị mặc định để nhận giá trị đã đặt khi hết thời gian chọn.Hàm sử dụng trong mã VBA:Call MsgBox(Prompt:="Xin ch" & ChrW(224) & "o")
Vị trí Tham số Kiểu Chức năng 1Prompt Chuỗi Ô trả kết quả 2buttons Số Kiểu các nút hiển thị 3title Chuỗi Tiêu đề Box 4Default Số Giá trị trả về nếu quá thời gian, mặc định 32000 5TimeOutSeconds Số Số giây đếm ngược để đóng box 6hwnd Số Handle của Window 7button1 Chuỗi Chuỗi thay thế Nút thứ nhất 8button2 Chuỗi Chuỗi thay thế Nút thứ hai 9button3 Chuỗi Chuỗi thay thế Nút thứ ba 10ShowUnderCursor Có/Không Hiện Box ngay tại vị trí con trỏ chuột
Các giá trị buttons - Kiểu các nút hiển thị:
#Giá trị mặc định Các nút hiển thị 1vbOkOnly = 0 Xác nhận 2vbOkCancel = 1 Xác nhận + Hủy 3vbAbortRetryIgnore = 2 Hủy bỏ + Thử lại + Thử lại 4vbYesNoCancel = 3 Có + Không + Hủy 5vbYesNo = 4 Có + Không 6vbRetryCancel = 5 Thử lại + Hủy
Các giá trị MsgBox trả về:
#Giá trị mặc định Chức năng 1vbOk = 1 Xác nhận 2vbCancel = 2 Hủy 3vbAbort = 3 Hủy bỏ 4vbRetry = 4 Thử lại 5vbIgnore = 5 Bỏ qua 6vbYes = 6 Có 7vbNo = 7 Không 8vbOutTime = 32000 Hết thời gian chọn
Ví dụ đặt giá trị mặc định cho MsgBox:
Nếu gọi như sau:Call MsgBox(Prompt:="Xin ch" & ChrW(224) & "o",Default:=VbNo,Button:=VbYesNoCancel)Thì sau khi hết thời gian chọn thì giá trị VbNo sẽ được trả về.Và đếm ngược sẽ hiện thị tại nút vbNo. Nếu không đếm ngược sẽ hiện tại nút vbCancel
Hàm InputBox mới:
Hàm InputBox mới này sẽ nhập được chuỗi Unicode và đếm ngược thời gian, tùy chọn ẩn giá trị nhập đổi thành dấu sao (*). Có tùy chọn hiện Box ngay tại vị trí chuột.Hàm sử dụng trong mã VBA:Call InputBox(Prompt:="Xin ch" & ChrW(224) & "o",CharPassword:=True,ShowUnderCursor:=True)
Vị trí Tham số Kiểu Chức năng 1Prompt Chuỗi Ô trả kết quả 2title Chuỗi Tiêu đề Box 3Default Bất kỳ Đặt giá trị trả về mặc định 4x Số Dịch cửa sổ ngang 5y Số Dịch cửa sổ dọc 5HelpFile chuỗi Tệp hướng dẫn 6Context Chuỗi 7TimeOutSeconds Số Số giây đếm ngược để đóng box 8CharPassword Có/Không Chuyển ký tự nhập thành dấu sao (*) 9ShowUnderCursor Có/Không Hiện Box ngay tại vị trí con trỏ chuột
****Thủ tục bổ trợ để tạo mã từ chuỗi tiếng Việt:
Hãy chạy thủ tục MakeCodeUnicode, và nhập tiếng Việt vào Box, chuỗi sẽ được chuyển thành mã và lưu vào Clipboadrd
Để sử dụng được hai hàm mới hãy sao chép Module và Class trong tệp ứng dụng bên dưới vào dự án của bạn.
-------------------------------------------------------------------
Để có thể viết mã nhanh chóng hoặc chuyển chuỗi Unicode tiếng Việt thành mã các bạn hãy tham khảo Tools VBA:
![]()
VBA_FastCode v2.2 - Công cụ học và viết mã VBA một cách nhanh nhất (27/10/2023)
***** CẬP NHẬT MỚI v2.2 ***** -------------------------------------------------------------------------- Add-in được chia sẻ dưới đây, đó là những gì tôi hiểu biết về VBA và đã viết ra nó. Một Add-in Tools chỉnh sửa code VBA rất đơn giản nhưng có thể giúp các bạn học VBA và viết code nhanh...www.giaiphapexcel.com
-------------------------------------------------------------------
Bạn có thể đọc thêm các bài biết của tôi tại tag #sanbi udf

Bạn sử dụng winspy, chụp handle của các nút và thông báo được khôngThử trên máy mình, thì bị lỗi tiếng Việt:
View attachment 290933



Bạn chụp handle của chuỗi Nhập Mật KhẩuÝ bạn là cái này:






Bây giờ chữ "Xác nhận" đã hết bị lỗi. Những mục còn lại vẫn bị.@Nhattanktnn Bạn thử lại, không biết thông số windows và office của bạn khác thế nào mà có lỗi này.




Hàm Msgbox không lỗi nha bạn.@Nhattanktnn Hàm MsgBox không bị lỗi phải không bạn.
Bạn tải lại lần nữa.
Lí do là cửa sổ InputBox trên máy của bạn được cấu hình khác.




Hết lỗi rồi nha bạn@Nhattanktnn
Bạn tải lại lần nữa







Bạn cho mình hỏi muốn dùng hộp thoại Inputbox hiển thì được tiếng việt trong word thì làm thế nào ạ?

Cảm ơn bạn nhiều. Đúng cái mình tìm bấy lâu nay.***** CẬP NHẬT MỚI v2.4 *****
Mã tương thích tất cả phiên bản Office và ứng dụng Office Excel, Word, Access, PowerPoint
Câu hỏi của bạn khá là hay, tôi đã viết mã tương thích hầu hết ứng dụng Office các phiên bản vào bản mới v2.4, bạn chỉ cần tải về vào VBA kéo module và class module vào dự án Office của bạn, và sử dụng hai hàm trên.

Xin cho mình hỏi sao mình làm thế này mà bảng inputbox không hiện ra giữa cửa sổ?***** CẬP NHẬT MỚI v2.4 *****
Mã tương thích tất cả phiên bản Office và ứng dụng Office Excel, Word, Access, PowerPoint
Câu hỏi của bạn khá là hay, tôi đã viết mã tương thích hầu hết ứng dụng Office các phiên bản vào bản mới v2.4, bạn chỉ cần tải về vào VBA kéo module và class module vào dự án Office của bạn, và sử dụng hai hàm trên.

Xin cho mình hỏi sao mình làm thế này mà bảng inputbox không hiện ra giữa cửa sổ?
Xin lỗi lại làm phiền bạn 1 chút. Mình gán giá trị a bằng hàm inputbox nhập vào khi ấn lệnh hủy thì bị lỗi như hình. Khắc phục lỗi này thế nào ạ.



Các biểu tượng là căn bản của MsgBox: buttons:=VbOkOnly + vbExclamationHeSanbi để MsgBox hiện thị thêm biểu tượng trong thông báo nữa được không bạn?View attachment 292179



Đúng, mình cũng gặp tình trạng như vậyMình có thử thì thấy msgbox thì ok , còn nhấn thử vào "Nhấn Thử InputBox nhập" thì excel đơ luôn ,thử đi thử lại vài lần vẫn vậy



Mình thử bản 3.0. Nhưng bạn hỏi thì thử thêm bản 2.6 nữa, bản 2.6 này thì cả msgbox bấm vào cũng bị đóng file luônBản 3 hay 2 vậy 2 bạn
Sub MsgBox_unicodeTelex_test()
Dim o As Object, s%, t$
t = "Ma.x hoa.s va.f giai.r ma.x voi.ws VNiTelex"
s = 4: Set o = Nothing
MsgBox Prompt:="Tieu.e dde.ef va.f chuoi.ox tai.j thong.o bao.s nay.f dduoc.wj ma.x hoa.s\nvoi.ws ham.f VNiTelex va.f giai.r ma.x voi.ws VNiTelexDecode", _
title:=t, Default:=vbYes, location:=ABLCursor, buttons:=vbYesNoCancel + vbCritical, TimeOutSeconds:=s, TelexVNI:=True
End Sub
www.giaiphapexcel.com
| Vị trí | Tham số | Chức năng |
|---|---|---|
1 | Message | Tin nhắn thông báo |
2 | title | Tiêu đề thông báo |
3 | Icon | Icon thông báo beNone = 0 không có icon beInformation = 1 thông tin beWarning = 2 Cảnh báo beError = 3 Lỗi beNoSound = &H10 Không có âm thanh |
4 | Timeout | Thời gian tự động đóng thông báo |
ShowBalloonTip "Hello Excel!", "Canh.r bao.s", beError Or beNoSound




chạy thử không thấy hiện gì cả anh ơiCẬP NHẬT MỚI 03/08/2024
- Sửa mã nguồn phiên bản cũ
- Thêm thủ tục tạo thông báo nổi Window
Thủ tục ShowBalloonTip:
Hiển thị thông báo nổi Window![]()
Vị trí Tham số Chức năng 1Message Tin nhắn thông báo 2title Tiêu đề thông báo 3Icon Icon thông báo
beNone = 0 không có icon
beInformation = 1 thông tin
beWarning = 2 Cảnh báo
beError = 3 Lỗi
beNoSound = &H10 Không có âm thanh 4Timeout Thời gian tự động đóng thông báo
Ví dụ: thông báo tin nhắn "Hello Excel!", Tiêu đề là "Cảnh báo", với thông báo lỗi và không có âm thanh.
