MsgBox và InputBox v3.30: tiếng Việt, nhập ẩn, đếm ngược, bảng dữ liệu (Excel, Word, Access, PowerPoint) (1 người xem)

Người dùng đang xem chủ đề này

Giải pháp
CẬP NHẬT MỚI 03/08/2024

  1. Sửa mã nguồn phiên bản cũ
  2. 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
BallonTip.png

Vị tríTham số
Chức năng​
1​
MessageTin nhắn thông báo
2​
titleTiêu đề thông báo
3​
IconIcon 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
...
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ểuChức năng
1​
PromptChuỗiÔ trả kết quả
2​
buttonsSốKiểu các nút hiển thị
3​
titleChuỗiTiêu đề Box
4​
DefaultSốGiá trị trả về nếu quá thời gian, mặc định 32000
5​
TimeOutSecondsSốSố giây đếm ngược để đóng box
6​
hwndSốHandle của Window
7​
button1ChuỗiChuỗi thay thế Nút thứ nhất
8​
button2ChuỗiChuỗi thay thế Nút thứ hai
9​
button3ChuỗiChuỗi thay thế Nút thứ ba
10​
ShowUnderCursorCó/KhôngHiệ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 địnhCác nút hiển thị
1​
vbOkOnly = 0Xác nhận
2​
vbOkCancel = 1Xác nhận + Hủy
3​
vbAbortRetryIgnore = 2Hủy bỏ + Thử lại + Thử lại
4​
vbYesNoCancel = 3Có + Không + Hủy
5​
vbYesNo = 4Có + Không
6​
vbRetryCancel = 5Thử lại + Hủy

Các giá trị MsgBox trả về:

#​
Giá trị mặc địnhChức năng
1​
vbOk = 1Xác nhận
2​
vbCancel = 2Hủy
3​
vbAbort = 3Hủy bỏ
4​
vbRetry = 4Thử lại
5​
vbIgnore = 5Bỏ qua
6​
vbYes = 6
7​
vbNo = 7Không
8​
vbOutTime = 32000Hế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ểuChức năng
1​
PromptChuỗiÔ trả kết quả
2​
titleChuỗiTiêu đề Box
3​
DefaultBất kỳĐặt giá trị trả về mặc định
4​
xSốDịch cửa sổ ngang
5​
ySốDịch cửa sổ dọc
5​
HelpFilechuỗiTệp hướng dẫn
6​
ContextChuỗi
7​
TimeOutSecondsSốSố giây đếm ngược để đóng box
8​
CharPasswordCó/KhôngChuyển ký tự nhập thành dấu sao (*)
9​
ShowUnderCursorCó/KhôngHiệ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:

-------------------------------------------------------------------
Bạn có thể đọc thêm các bài biết của tôi tại tag #sanbi udf
Thử trên máy mình, thì bị lỗi tiếng Việt:
1685675416660.png
 
Upvote 0
@Nhattanktnn Bạn tải tệp thử lại xem còn lỗi không
 
Upvote 0
@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.
 
Upvote 0
Upvote 0
@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.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Cái lỗi này chắc còn liên quan đến thiết lập trong Region nữa.
 
Upvote 0
*** Cập nhật: Bổ sung tệp cho hai hàm MsgBox và InputBox mã viết chỉ ở trong một Module duy nhất.
 
Upvote 0
***** CẬP NHẬT ObjectBoxVNI 2.1 *****
Thêm tùy chọn Hiển thị Box chính giữa cửa sổ
 
Upvote 0
***** SIÊU CẬP NHẬT MỚI v2.3 *****

  1. Thêm các chuyển động hoạt ảnh hiện và ẩn Box sau khi hết đếm ngược.
  2. Thêm đối số nhận vị trí hiện cửa sổ
  3. Thêm hiện dữ liệu bảng trên MsgBox
  4. Thêm Icon cho cửa sổ
    msgbox_yes_no_cancel_001.jpg
  5. Sửa lỗi unicode trong ô nhập InputBox

Với bản cập nhật này hàm MsgBox InputBox sẽ tuyệt vời hơn

**** Dự kiến bản cập nhật tiếp sẽ cho phép thêm ảnh vào MsgBox và InputBox.

Các bạn hãy đọc lại bài viết chính để xem chi tiết cập nhật


objectBoxVni_table
 
Lần chỉnh sửa cuối:
Upvote 0
Phát hiện lỗi nhập mảng nên tôi đã cập nhật v2.2 lên v2.3
 
Upvote 0
***** 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


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â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.
 
Lần chỉnh sửa cuối:
Upvote 0
***** 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.
Cảm ơn bạn nhiều. Đúng cái mình tìm bấy lâu nay.
 
Upvote 0
***** 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ổ?1687701969195.png
 
Upvote 0
Upvote 0
HeSanbi để MsgBox hiện thị thêm biểu tượng trong thông báo nữa được không bạn?1688106449599.png
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
***** DEMO BẢN v3.0 *****
Thêm nhiều chức năng:
  1. Âm thanh khi hiện ẩn box, hoặc khi nhấn nút.
  2. Chế độ Modaless: khi Box hiện lên thì vẫn có thể thao tác với trang tính.
  3. Chế độ hiện box và đợi cho đến khi thực thi mã hoàn thành.
 
Upvote 0
Mì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
 
Upvote 0
Bản 3 hay 2 vậy 2 bạn
 
Upvote 0
***** CẬP NHẬT Bản v2.7 và v3.1 *****
Sửa lỗi làm ngưng Excel
 
Upvote 0
***** CẬP NHẬT BẢN v3.2 *****

Thêm kiểu nhập thông báo và tiêu đề tiếng Việt với mã Telex

Ví dụ mã:
JavaScript:
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

Hướng dẫn tạo chuỗi Unicode tại bài viết:
 
Lần chỉnh sửa cuối:
Upvote 0
CẬP NHẬT MỚI 03/08/2024

  1. Sửa mã nguồn phiên bản cũ
  2. 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
BallonTip.png

Vị tríTham số
Chức năng​
1​
MessageTin nhắn thông báo
2​
titleTiêu đề thông báo
3​
IconIcon 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​
TimeoutThờ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.​
ShowBalloonTip "Hello Excel!", "Canh.r bao.s", beError Or beNoSound​
 
Upvote 0
Giải pháp
CẬP NHẬT MỚI v3.30 24/11/2024

Thêm nhập liệu tiếng Việt cho inputBox
Phương thức VBA.InputBox không hỗ trợ nhập chuỗi Unicode. Bản cập nhật mới giúp khắc phục nhược điểm này.
Thêm hoạt ảnh đóng cửa sổ khi nhấn nút để có cái nhìn trực quan, thay cho việc cửa sổ đóng ngay lập tức
 
Lần chỉnh sửa cuối:
Upvote 0
CẬP NHẬT MỚI 03/08/2024

  1. Sửa mã nguồn phiên bản cũ
  2. 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
BallonTip.png

Vị tríTham số
Chức năng​
1​
MessageTin nhắn thông báo
2​
titleTiêu đề thông báo
3​
IconIcon 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​
TimeoutThờ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.​
chạy thử không thấy hiện gì cả anh ơi1734525635024.png
 
Upvote 0
@Mutants Men Đổi thiết lập như hình bạn nhé

1734527004443.png
1734526798856.png
 
Upvote 0
Anh @HeSanbi cho em hỏi để áp dụng được ver3.30 này vào file excel của em thì có yêu cầu cấu hình máy tính hay version Office như nào không ạ?
Vì em đang sử dụng là window 10 pro và office365 nhưng mở file mẫu của anh lên thử chạy là bị treo, sau đó ứng dụng Excel tự tắt.
 
Upvote 0
@test1986 ứng dụng mình viết tương thích hầu hết nền tảng, nhưng vẫn không lường trước được một số trường hợp nhất định.
Trước tiên bạn thử đặt đếm ngược TimeoutSeconds:=0 vào phương thức xem có bị nữa không.
 
Upvote 0
@test1986 Mình đã kiểm tra lại, bản 3.30 đã lỗi API, mình sẽ sửa sau. Bạn có thể tải bản 2.85 để sử dụng.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom