2016-05-23 4 views
2

Weiß jemand, ob es möglich ist, den Text, der in einen Excel-Bereich eingegeben wird, als "*******" erscheinen zu lassen? Ich möchte, dass Benutzer ein Kennwort in einen Bereich eingeben können, um sich anzumelden (ohne eine Benutzerform), aber ich möchte, dass die Zeichen Sternchen (*) sind, wenn der Benutzer so schreibt, dass er nicht gesehen werden kann.Excel - Ist es möglich, Zeichen als "*" in einem Bereich erscheinen zu lassen?

Ich benutze ein Benutzerformular als letzten Ausweg, aber ich möchte versuchen, dies ohne ein Benutzerformular zuerst zu tun.

Kann mir jemand Hilfe anbieten?

Vielen Dank!

+0

Das OnChange-Ereignis wird nur ausgelöst, nachdem die Zelle bearbeitet wurde, so ihr Passwort im Klartext erscheinen würde, bis sie die Zelle verlassen. Dann wäre es ziemlich einfach, den Wert dieser Zelle in einer Variablen zu speichern und den Text der Zelle durch Sternchen zu ersetzen. Wird es funktionieren? – Tim

+2

Sie können dieses benutzerdefinierte Zellenformat ';;; **' verwenden, aber das Passwort wird weiterhin in der Bearbeitungsleiste angezeigt. –

+2

Nur ein Kommentar - wenn dies ein sicheres Dokument sein soll, beachten Sie bitte, dass Excel Locking/Protection ist im Grunde ein Witz, wenn Sie entschlossen sind, dort hineinzukommen. Es wird auch andere Möglichkeiten geben, wie Menschen die Daten vielleicht bekommen können. Wenn das für einen Test/nichts supersensibel ist, dann geht es dir wahrscheinlich gut ... nur zu erwähnen. – BruceWayne

Antwort

1

Eine andere Möglichkeit könnte sein, Textfeld ActiveX-Steuerelement in der Tabelle mit PasswordChar-Eigenschaft auf z. *. Der Text, den der Benutzer in das Textfeld eingibt, wird als * angezeigt. Das Textfeld kann so formatiert werden, dass es die gleiche Größe wie die Zelle hat, die es enthält, und es wird bei der Änderung der Zellgröße usw. skaliert. Linked-cell kann verwendet werden, damit der Kennwortwert aus dieser Zelle gelesen werden kann.

enter image description here

+0

Großer Vorschlag! Danke, Dee!Ich werde diesen Vorschlag umsetzen. Können Sie übrigens näher erläutern, wie Sie die Größe des Textfelds mit der enthaltenen Zelle ändern? Ich habe "Verschieben und Größe mit Zellen" aktiviert, als ich mit der rechten Maustaste auf das Textfeld klicke (im Designer-Modus) und "Format Control" wähle und auf die Registerkarte "Eigenschaften" gehe. Diese Eigenschaft führte nicht automatisch zu einer Größenänderung des Textfelds, wenn ich die Größe der enthaltenen Zelle ändere. Können Sie das näher ausführen? – christopheralan88

+0

"Bewegen und Größe mit Zellen", ja, das war auch meine Idee. Wenn dies nicht funktioniert, können Sie die Struktur des Arbeitsblatts sperren, so dass die Breite/Höhe der Zeilen vom Benutzer nicht geändert werden kann. Oder über VBA handle 'Worksheet_SelectionChange' und überprüfe, ob' Target' die Zelle mit Passwort überschneidet und sicherstellt, dass die Größe des Textfelds der Größe der Zelle entspricht? – dee

1

Dies ohne ein Benutzerformular zu tun ist weniger als ideal, da dieser Code jedes Mal ausgeführt wird, wenn sich etwas auf dem Blatt ändert. strPassword wird als globale Variable dimensioniert und muss oben auf Ihrem Code sein.

Dim strPassword As String 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Sheet1.Cells(1, 1).Value <> "********" Then 
     strPassword = Sheet1.Cells(1, 1).Value 
     Sheet1.Cells(1, 1).Value = "********" 
    End If 
    MsgBox strPassword 
End Sub 

Wenn es Platz auf dem Blatt, das Hinzufügen dieses Code auf eine Schaltfläche (dh Button1_Click Ereignis), die das Passwort lesen würde und den Zellenwert ersetzen würde den Code aus Laufen bei jeder Änderung verhindern.

+0

Ooh, könnten Sie vielleicht auch 'Application.DisplayFormulaBar = False' hinzufügen? Wenn ein Benutzer in eine Zelle eintippt, zeigt die Bearbeitungsleiste die Zeichen nicht an. – BruceWayne

+0

Danke für den Vorschlag, Tim! Ich mag Tim Williams Kommentar oben, weil es keinen Code zum Ausführen benötigt - Mir geht es gut mit Makros, ich würde mich eher für die einfachere Lösung entscheiden. Trotzdem danke! – christopheralan88

Verwandte Themen