paulsteigel > 06-08-15, 10:41 AM
MsgBox "Hi", vbCritical + vbYesNo, "xxxx"
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextW" _
(ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadID As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
UnhookWindowsHookEx hHook
MsgBox = Application.Assistant.DoAlert(IIf(DlgCaption <> "", DlgCaption, App_Title), _
MessageTxt, msgButton, msgBoxIcon, ButtonDefault, msoAlertCancelDefault, True)
kieu manh > 06-08-15, 07:44 PM
kieu manh > 06-08-15, 09:42 PM
MTNQ > 07-08-15, 10:21 PM
(06-08-15, 09:42 PM)kieu manh Đã viết: ...
Một bộ siêu tập Msgbox khá đầy đủ nhưng còn thiếu một cái InputBox tiếng việt có dấu ...phải chăng nó khó làm quá....
Function InputBox(ByVal Prompt As String, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As String
Title = IIf(Title <> "", Title, Application.Name)
hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
InputBox = Eval("InputBox(""" & Prompt & _
""", """ & Title & """, """ & DefaultResponse & """)")
End Function
MTNQ > 08-08-15, 09:09 AM
Function fInputBox(ByVal Prompt As String, Optional ByVal Title As String = "", Optional ByVal DefaultResponse As String = "") As String
Title = IIf(Title <> "", Title, Application.Name)
fInputBox = Eval("InputBox(""" & Prompt & _
""", """ & Title & """, """ & DefaultResponse & """)")
End Function
InputBox ( prompt [, title ] [, default ] [, xpos ] [, ypos ] [, helpfile ] [, context ] )
chigonvh > 01-10-15, 10:05 PM
(31-07-15, 10:10 PM)maidinhdan Đã viết: Còn 1 cách nửa mà mình chưa trình bày, nhưng cũng có đã sử dụng trong demo trên. Nên mình xin trình bày dưới đây luôn.
Tên gọi: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA
Tác giả: Noname
Link liên kêt để trao đổi: http://thuthuataccess.com/forum/thread-4302.html
Tên hàm sử dụng: Chrw( mã unicode)
Cách thức sử dụng:
Bước 1: Bạn viết tiếng việt vào ô như hình phía trên, sau đó ta nhấn nút chuyển, Sau đó copy đoạn chữ mới tạo ra.
Bước 2: Viết hàm MsgBox bình thường trong VBA
Ví dụ: Tôi rất yêu em ======> "Tôi r" & ChrW(7845) & "t yêu em"
=> MsgBox ("Tôi r" & ChrW(7845) & "t yêu em")
Chúc các bạn thành công.
Phần này mình cũng đã bổ sung vào file đính kèm thứ 2 ở bài đầu tiên.
tranthanhan1962 > 02-10-15, 01:24 AM
MTNQ > 17-03-16, 05:00 PM
Minh Tiên Đã viết:Chào cả nhà !
Tiên có một vấn đề phát sinh lỗi những không viết lý do là gì ? Nhờ các Pro chỉ giáo giúp !
Tiên có 1 File Access sử dụng "Msgbox thông báo lỗi bằng tiếng Việt của bạn "pausteigel" trên diễn đàn", khi chạy trên PC có office 2007 hoặc 2013 thì chạy OK. Nhưng khi gỡ office và chạy Access Runtime 2007 hoặc Access Runtime 2013 thì không chạy được và thông báo lỗi: "Đã dừng thực thi do lỗi thời gian chạy".
Nhờ các pro chỉ giáo cách khắc phục lỗi ! Hoặc hướng dẫn cách sử dụng code để khi chạy Access Runtime ko bị lỗi !
Thanks !
Option Explicit
'=======================================================
' Module for Vietnamized MsgBox function
' This overide default VBA MsgBox function with some small
' modifications of text, button caption....
' Use this MsgBox function like it is in default VBA IDE
'=======================================================
' Import
#If VBA7 Then
Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As LongPtr
Private Declare PtrSafe Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextW" _
(ByVal hDlg As LongPtr, _
ByVal nIDDlgItem As LongPtr, _
ByVal lpString As String) As LongPtr
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As LongPtr, _
ByVal lpfn As LongPtr, _
ByVal hmod As LongPtr, _
ByVal dwThreadID As LongPtr) As LongPtr
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As LongPtr) As LongPtr
' Handle to the Hook procedure
Private hHook As LongPtr
#Else
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextW" _
(ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadID As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
' Handle to the Hook procedure
Private hHook As Long
#End If
' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
' Constants
Private Const IDOK = 1
Private Const IDCANCEL = 2
Private Const IDABORT = 3
Private Const IDRETRY = 4
Private Const IDIGNORE = 5
Private Const IDYES = 6
Private Const IDNO = 7
' Modify this code for English
Private StrYes As String
Private StrNo As String
Private StrOK As String
Private StrCancel As String
Private StrRetry As String
Private StrIgnore As String
Private StrAbort As String
Private Function MsgBoxHookProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
StrYes = "&C" & ChrW(243)
StrNo = "&Kh" & ChrW(244) & "ng"
StrOK = "Ch" & ChrW(7845) & "p nh" & ChrW(7853) & "&n"
StrCancel = "&H" & ChrW(7911) & "y"
StrRetry = "&Th" & ChrW(7917) & " l" & ChrW(7841) & "i"
StrAbort = "&D" & ChrW(7915) & "ng"
StrIgnore = "&B" & ChrW(7887) & " qua"
SetDlgItemText wParam, IDYES, StrConv(StrYes, vbUnicode)
SetDlgItemText wParam, IDNO, StrConv(StrNo, vbUnicode)
SetDlgItemText wParam, IDCANCEL, StrConv(StrCancel, vbUnicode)
SetDlgItemText wParam, IDOK, StrConv(StrOK, vbUnicode)
SetDlgItemText wParam, IDABORT, StrConv(StrAbort, vbUnicode)
SetDlgItemText wParam, IDRETRY, StrConv(StrRetry, vbUnicode)
SetDlgItemText wParam, IDIGNORE, StrConv(StrIgnore, vbUnicode)
' Release the Hook
UnhookWindowsHookEx hHook
End If
MsgBoxHookProc = False
End Function
Function MsgBox(MessageTxt As String, Optional msgStyle As VbMsgBoxStyle, Optional DlgCaption As String = "") As VbMsgBoxResult
DlgCaption = IIf(DlgCaption <> "", DlgCaption, Application.Name)
hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
MsgBox = Eval("MsgBox(""" & MessageTxt & _
""", """ & msgStyle & """, """ & DlgCaption & """)")
End Function
DooHoaangPhuuc > 23-04-18, 10:59 PM
ongke0711 > 23-04-18, 11:33 PM
Option Compare Database
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
'Hàm StrConv Chuyen chuoi ve ma Unicode'
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function