Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bei Fenster Passworteingabe mit "*"

Forumthread: Bei Fenster Passworteingabe mit "*"

Bei Fenster Passworteingabe mit "*"
12.12.2018 16:37:56
Thomas
Hallo
Per klick öffne ich eine Passwortabfrage. Jedoch steht bei Eingabe des Passwortes dort das Passwort, möchte aber, das es per Sternchen angezeigt wird.
Hier der COde:
Private Sub CommandButton1_Click()
Dim sPassWord As String
sPassWord = InputBox("Paßwort eingeben:", , "")
Select Case sPassWord
Case "Passwort"
With Worksheets("Tabelle1")
.Visible = True
.Application.Visible = True
.Select
End With
Case "": Exit Sub
Case Else
Beep
MsgBox "Falsches Passwort eingegeben!"
End Select
Unload Auswahlfenster
End Sub
Vielen Dank für Eure Hilfe
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Fenster Passworteingabe mit "*"
12.12.2018 16:40:07
Peter(silie)
Hallo,
geht nicht mit der InputBox.
Erstelle eine UserForm und setze eine TextBox drauf.
Suche nach der Eigenschaft 'PasswordChar' und trage dort das * ein.
AW: Bei Fenster Passworteingabe mit "*"
12.12.2018 19:30:02
Sepp
Hallo Thomas,
das geht z. B. so:
Modul Modul1
Option Explicit 
 
'//////////////////////////////////////////////////////////////////// 
'Password masked inputbox 
'Allows you to hide characters entered in a VBA Inputbox. 
' 
'Code written by Daniel Klann 
'March 2003 
'//////////////////////////////////////////////////////////////////// 
 
 
'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 GetCurrentThreadId Lib "kernel32" () As Long 
 
#If VBA7 Then 
Private Declare PtrSafe Function GetClassName Lib "USER32" Alias _
  "GetClassNameA" (ByVal hWnd As LongPtr, ByVal lpClassName As String, ByVal _
  nMaxCount As LongPtr) As Long 
#Else 
Private Declare Function GetClassName Lib "USER32" Alias "GetClassNameA" (ByVal _
  hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long 
#End If 
 
'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 
 
 
Private Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
  Dim RetVal, 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 *. 
      'You can change the Asc("*") as you please. 
      SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0 
    End If 
 
  End If 
 
  'This line will ensure that any other hooks that may be in place are 
  'called correctly. 
  CallNextHookEx hHook, lngCode, wParam, lParam 
 
End Function 
 
Private Function InputBoxDK(Prompt, Title) As String 
  Dim lngModHwnd As Long, lngThreadID As Long 
 
  lngThreadID = GetCurrentThreadId 
 
  lngModHwnd = GetModuleHandle(vbNullString) 
 
  hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID) 
 
  InputBoxDK = InputBox(Prompt, Title) 
 
  UnhookWindowsHookEx hHook 
 
End Function 
 
Private Sub CommandButton1_Click() 
  Dim sPassWord As String 
  sPassWord = InputBoxDK("Paßwort eingeben:", "") 
  Select Case sPassWord 
    Case "Passwort" 
      With Worksheets("Tabelle1") 
        .Visible = True 
        .Application.Visible = True 
        .Select 
      End With 
    Case "": Exit Sub 
    Case Else 
      Beep 
      MsgBox "Falsches Passwort eingegeben!" 
  End Select 
     
  Unload Auswahlfenster 
     
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Passwortabfrage in Excel mit Sternchen anzeigen


Schritt-für-Schritt-Anleitung

Um eine Passwortabfrage in Excel zu erstellen, bei der die Eingabe als Sternchen angezeigt wird, kannst Du eine UserForm verwenden, anstatt die Standard-InputBox. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. UserForm erstellen:

    • Öffne den VBA-Editor mit ALT + F11.
    • Klicke auf Einfügen > UserForm.
  2. TextBox hinzufügen:

    • Ziehe eine TextBox auf die UserForm.
    • Setze die Eigenschaft PasswordChar auf * (oder ein anderes gewünschtes Zeichen).
  3. Befehlsbutton hinzufügen:

    • Füge einen CommandButton hinzu, um die Eingabe zu bestätigen.
  4. VBA-Code hinzufügen:

    • Doppelklicke auf den CommandButton und füge den folgenden Code hinzu:
    Private Sub CommandButton1_Click()
       Dim sPassWord As String
       sPassWord = TextBox1.Text ' TextBox1 ist der Name Deiner TextBox
       Select Case sPassWord
           Case "Passwort"
               Worksheets("Tabelle1").Visible = True
               MsgBox "Zugriff erlaubt!"
           Case Else
               MsgBox "Falsches Passwort!"
       End Select
    End Sub
  5. UserForm anzeigen:

    • Füge einen weiteren Code in ein Modul ein, um die UserForm zu öffnen:
    Sub ShowPasswordForm()
       UserForm1.Show
    End Sub

Häufige Fehler und Lösungen

  • Problem: Die TextBox zeigt das Passwort nicht als Sternchen an.

    • Lösung: Stelle sicher, dass die Eigenschaft PasswordChar in der TextBox korrekt gesetzt ist.
  • Problem: Die UserForm wird nicht angezeigt.

    • Lösung: Überprüfe, ob der Sub ShowPasswordForm korrekt aufgerufen wird.

Alternative Methoden

Falls Du die UserForm nicht verwenden möchtest, gibt es auch alternative Methoden, um eine Passwortabfrage mit Sternchen anzuzeigen:

  1. API-Funktion nutzen: Du kannst API-Funktionen verwenden, um das Standard-Verhalten der InputBox zu ändern. Hier ist ein einfaches Beispiel:

    Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long
    ' Weitere API-Deklarationen folgen hier...
  2. Benutzerdefinierte InputBox: Erstelle eine benutzerdefinierte InputBox mit VBA, die das Passwort maskiert.


Praktische Beispiele

Ein praktisches Beispiel für die Verwendung einer benutzerdefinierten InputBox mit maskierten Zeichen könnte so aussehen:

Function InputBoxDK(Prompt As String, Title As String) As String
    ' API-Funktionen einfügen...
    InputBoxDK = InputBox(Prompt, Title)
End Function

Verwende diese Funktion im CommandButton, um die Eingabe zu erfassen und das Passwort zu überprüfen.


Tipps für Profis

  • Sicherheit erhöhen: Verwende statt einfacher Passwörter komplexe Passwörter und speichere diese sicher.
  • Debugging: Nutze die Debugging-Funktionen im VBA-Editor, um Fehler schnell zu finden und zu beheben.
  • Gestalte die UserForm ansprechend: Achte darauf, dass die UserForm benutzerfreundlich und ansprechend aussieht.

FAQ: Häufige Fragen

1. Wie kann ich die Größe der UserForm anpassen?
Du kannst die Größe der UserForm anpassen, indem Du die Eigenschaften Width und Height im Eigenschaftenfenster änderst.

2. Ist es möglich, mehrere Passwortabfragen zu erstellen?
Ja, Du kannst mehrere UserForms erstellen oder die Logik innerhalb einer UserForm anpassen, um verschiedene Passwörter zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige