En este grupo En todos

Foro de Excel



Color de texto

YURI
Bachillerato tecnico en administracion...
Escrito por Yuri Alfaro
el 21/10/2009 | Nivel Medio

Otras buenas tardes para todos, tengo otra duda con respecto a los inputbox; el asunto es que rebuscando por ahi consegui un codigo que adapte para mi proyecto el cual consta de un inputbox en el que el usuario carga una clave para ingresar a la planilla y si esta es incorrecta se cierra, a todo esto el incoveniente es que cuando el usuario ingresa la contreseña se ve lo que escribe; si hubiera una manera de aunque sea cambiar el color de letra a blanco para "camuflar" la clave, se que con un texbox en un form se le puede poner en la propiedad passwordchar el *** pero para un inputbox no tengo idea, gracias de antemano a todos, saludos

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 21/10/2009 | Nivel Medio

Pues lamentablemente no hay manera de que un InputBox propio del VBA de Excel, cambie sus formatos.

Recurriendo a la API de windows y sus funciones puedes hacerlo:

Option Explicit

'////////////////////////////////////////////////////////////////////
'Password masked inputbox
'Allows you to hide characters entered in a VBA Inputbox.
'
'Code written by Daniel Klann
'https://www.danielklann.com/
'March 2003

'// Kindly permitted to be amended
'// Amended by Ivan F Moala
'// https://www.xcelfiles.com
'// April 2003
'// Works for Xl2000+ due the AddressOf Operator
'////////////////////////////////////////////////////////////////////


'API functions to be used
Private Declare Function CallNextHookEx _
Lib "user32" ( _
ByVal hHook As Long, _
ByVal ncode As Long, _
ByVal wParam As Long, _
lParam As Any) _
As Long

Private Declare Function GetModuleHandle _
Lib "kernel32" _
Alias "GetModuleHandleA" ( _
ByVal lpModuleName 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

Private Declare Function SendDlgItemMessage _
Lib "user32" Alias "SendDlgItemMessageA" ( _
ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) _
As Long

Private Declare Function GetClassName _
Lib "user32" _
Alias "GetClassNameA" ( _
ByVal hwnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long) _
As Long

Private Declare Function GetCurrentThreadId _
Lib "kernel32" () _
As Long

'Constants to be used in our API functions
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private Const HC_ACTION = 0

Private hHook As Long

Public Function NewProc(ByVal lngCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Dim RetVal
Dim strClassName As String, lngBuffer As Long

If lngCode < HC_ACTION Then
NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
Exit Function
End If

StrClassName = String$(256, " ")
lngBuffer = 255

If lngCode = HCBT_ACTIVATE Then 'A window has been activated
RetVal = GetClassName(wParam, strClassName, lngBuffer)
If Left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox
'This changes the edit control so that it display the password character *.
&

Yuri Alfaro
Bachillerato tecnico en administracion...
Escrito por Yuri Alfaro
el 21/10/2009 | Nivel Medio

Estimado Abraham es un gusto que haya contestado a mi inquietud me gustaria saber como proceder con todo ese codigo.... Debo insertar un nuevo modulo? O va en otra parte, disculpa mi insistencia y nuevamente gracias

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 21/10/2009 | Nivel Medio

Mira:

https://grupos.emagister.com/documento/inputbox_para_claves__/6610-312120

Abraham

Yuri Alfaro
Bachillerato tecnico en administracion...
Escrito por Yuri Alfaro
el 22/10/2009 | Nivel Medio

Excelente Abraham sin palabras, muchas gracias por tu ayuda, ahora sera cuestion de adaptarlo a mi proyecto, mis admiraciones para ti.