Forums Neueste Beiträge
 

wie userformular wie inputbox nutzen

28/07/2009 - 13:18 von michlchen | Report spam
hallo

ich habe eine inputbox und möchte gerne die funktion passwordchar
nutzen. daher wollte ich mir ein formular mit dem format der inputbox
erstellen (textfeld mit passwordchar = *, ein label für kommentare,
was einzugeben ist und 2 buttons - ok und abbrechen. das formular soll
modal sein.).

wie kann ich das ganze jetzt am besten umsetzen, ohne viel im
quellcode àndern zu müssen?

am besten sowas wie


'formular öffnen
'eingaben im formular und erst weiter im makro wenn auf einen der
beiden buttons (dachte das wàre ev. über model lösbar)
wert = formular.textfeld.text

bei ok soll dabei das formular geschlossen werden und der text im feld
bleiben. bei abbrechen oder "X" auch schliessen aber den text auf "".
(überlegung. 2 felder, also user und password und dann user=feld1 ;
password=feld2)

wenn ich im makro aber das formular mit .show xlmodal anzeige, geht
der debugger trotzdem bis zum ende des makros. er soll aber erst auf
dem formular sein und dann bei buttonklick ab da weiter gehen. ich
will aber auch nicht mein makro in mehrere aufsplitten...

danke für die hilfe.
 

Lesen sie die antworten

#1 Andreas Killer
28/07/2009 - 15:28 | Warnen spam
michlchen schrieb:

ich habe eine inputbox und möchte gerne die funktion passwordchar
nutzen. daher wollte ich mir ein formular mit dem format der inputbox


Option Explicit

''/////////////////////////////////////////////////////////////////
''// 25 May 2003 //
''// Amended Ivan F Moala
''/////////////////////////////////////////////////////////////////

Public Declare Function GetActiveWindow Lib "user32" () As Long
Public 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
Public Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _
wParam As Long, lParam As Any) As Long
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc _
As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As _
Long, ByVal nIDEvent As Long) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long

Private Const nIDE As Long = &H100
Private Const EM_SETPASSWORDCHAR = &HCC

Private hdlEditBox As Long
Private Fgrndhdl As Long

Public Function TimerFunc(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal nEvent As Long, ByVal nSecs As Long) As Long
Dim hdlwndAct As Long
'// Do we have a handle to the EditBox
If hdlEditBox > 0 Then Exit Function
'// Get the handle to the ActiveWindow
hdlwndAct = GetActiveWindow()
'// Get the Editbox handle
hdlEditBox = FindWindowEx(hdlwndAct, 0, "Edit", "")
'// Set the password character for the InputBox
SendMessage hdlEditBox, EM_SETPASSWORDCHAR, Asc("*"), ByVal 0
End Function

Public Function InPutBoxPwd(fPrompt As String, Optional fTitle As _
String, Optional fDefault As String, Optional fXpos As Long, _
Optional fYpos As Long, Optional fHelpfile As String, Optional _
fContext As Long) As String
Dim sInput As String
'// Initialize
hdlEditBox = 0
Fgrndhdl = GetForegroundWindow
'// Windows-Timer
SetTimer Fgrndhdl, nIDE, 100, AddressOf TimerFunc
'// Main InputBox
If fXpos Then
sInput = InputBox(fPrompt, fTitle, fDefault, fXpos, fYpos, _
fHelpfile, fContext)
Else
sInput = InputBox(fPrompt, fTitle, fDefault, , , fHelpfile, _
fContext)
End If

'// Kill the correct Timer
KillTimer Fgrndhdl, nIDE
'// Pass result
InPutBoxPwd = sInput
End Function

'////////////////////////////////////////////////////
'// This is The main routine
'// where we test it
'////////////////////////////////////////////////////

Sub GetPassWord()
Dim x As String
x = InPutBoxPwd("Please enter password", "Sentry")
If x = vbNullString Then
MsgBox "User Cancelled"
Else
MsgBox "User entered " & x
End If
End Sub

Ähnliche fragen