excel vba inputbox如何能让输入密码时以*形式隐藏?求完整实例...
下面是一个EXCEL里面的例子,供参阅。
----------------------------------------------------------------------- Option Explicit'API宣告 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _(ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long'timeSetEvent函数请参考MSDN Private Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long, _ ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long Private Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long Private Const EM_SETPASSWORDCHAR = &HCC Dim lTimeID As Long 'Timer ID Const pswdInputBoxTitle = "pswdInputBox" '输入密码的对话框标题'TimeProc callback 函数请参考MSDN Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _ ByVal dw1 As Long, ByVal dw2 As Long) Dim hwd As Long '输入密码的对话框句柄'VBA InputBox对话框之Class Name是 "#32770",'标题为 "pswdInputBox", 这是在InputBox函数的Title引述中自订的'请注意Application.InputBox方法所出现的对话框Class Name是 "bosa_sdm_XL9" hwd = FindWindow("#32770", pswdInputBoxTitle) If hwd 0 Then '若对话框存在 '取得输入的文字框句柄, 该文字框的Class Name是"Edit", 无标题, '而Application.InputBox方法所出现的对话框之文字框的Class Name是"EDTBX" hwd = FindWindowEx(hwd, 0, "Edit", vbNullString) '设定密码字符为 "*", "*"的ASCII码为42 SendMessage hwd, EM_SETPASSWORDCHAR, 42, 0 '设定完成, 取消定时器 timeKillEvent lTimeID End If End Sub'自定义函数pswdInputBox, 是一个输入密码使用的InputBox, 输入的内容都以 "*" 显示.Function pswdInputBox() As Variant '启动一个特定的Timer事件, 0.01秒延迟, 0.05秒看一次 lTimeID = timeSetEvent(10, 50, AddressOf TimeProc, 1, 1) '显示InputBox对话框 pswdInputBox = InputBox(Prompt:="请输入编辑密码", Title:=pswdInputBoxTitle) End Function----------------------------------------------------------------------- 引用代码如下:-----------------------------------------------------------------------'工作表模块 Sheet1 程序代码 Option Explicit'选择范围改变事件 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Address = "$A$1" Then '若作用储存格为B2时 '呼叫pawdInputBox, 并检查返回值 If pswdInputBox 123456 Then '密码不正确, 显示讯息 MsgBox "对不起,密码错误,你无编辑权限!" '离开B2储存格 Range("A1").Select End If End If End Sub
转载请注明出处51数据库 » emsetpasswordchar
神奇的小江游