Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
204to208
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
204to208
204to208
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Private Sub in User Form

Private Sub in User Form
22.01.2003 21:16:39
Matthias H.
Hallo,

ich habe im Archiv folgenden Code gefunden, der es ermöglichen soll bei der Passwort-Eingabe das Passwort nicht als Klartext sondern als Sternchen (****) erscheinen zu lassen. Nachdem ich mir eine User Form mit "OK" und "Abbrechen" Knopf gebastelt, und den Code eingefügt habe, erscheint nach dem Aufrufen:

Run-time error '424': Object required
(Ich habe die englische Version von Office 9.0)

Hier ist der Quellcode:

Private Sub UserForm_Initialize()

' Schutz auf Wert 1 : Programm wird abgebrochen
' Schutz auf Wert 0 : Programm "EditApplication" läuft ab

Paßwort = CDbl(1) ' Schutz auf Wert 1 setzen
fKennwort.Text = "" ' Kennwort löschen
fKennwort.PasswordChar = "*" ' Echo-Zeichen
fKennwort.MaxLength = 8 ' Kennwortlänge
End Sub


Private Sub fCancel_Click()
Unload Me ' Formular schließen
Paßwort = CDbl(1) ' Schutz auf Wert 1 setzen
End Sub

Private Sub fOK_Click()
Paßwort = CDbl(0) ' Schutz auf Wert 0 setzen
If fKennwort.Text = "" Then
MsgBox "Kennwort fehlt", _
vbOKOnly, "Nachricht"
fKennwort.SetFocus ' Fokus auf Eingabefeld
ElseIf fKennwort.Text <> "Otto" Then
MsgBox "Kennwort falsch, bitte wiederholen oder abbrechen", _
vbOKOnly, "Nachricht"
fKennwort.Text = "" ' Falscheingabe löschen
fKennwort.SetFocus ' Fokus auf Eingabefeld
Paßwort = CDbl(1) ' Schutz auf Wert 1 setzen
Else
Unload Me ' Formular schließen
End If
End Sub


Da die Schaltflächen in der User Form ja "CommandButton1_Click()" und "CommandButton2_Click()" heissen, habe ich versucht "fOK_Click()" und "fCancel_Click()" entsprechend den Schaltflächen in "CommandButton1_Click()" usw. umzubennenen, aber das hat nichts gebracht.
Könnt ihr mir vielleicht helfen?

Gruß
Matthias




8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Private Sub in User Form
22.01.2003 21:41:45
Tobias
Hi Matthias

hier eine andere Lösung:

Private Sub CommandButton1_Click()
Dim s As String
Unload Me
Const passw = "PASSWORT"
s = InputBox("Geben Sie das Paßwort ein!")
If s = passw Then
MsgBox "OK Zugriff erlaubt!"
Exit Sub
Else
Application.DisplayAlerts = False
MsgBox "Sie haben keine Zugriffsrechte"
End If
End Sub

Gruss Tobias

Re: Private Sub in User Form
22.01.2003 21:53:16
Matthias H.
Hallo Tobias,

ich habe Deinen Code in die User Form eingefügt. Wenn ich dann starte, erscheint zuerst meine User Form (bei Eingabe: kommt das Passwort im Klartext). Nach Drücken von "OK" (egal was ich eingebe) kommt dann Deine User Form: Dort kann ich das Passwort eingeben (erscheint auch im Klartext), und dann kommt "OK Zugriff erlaubt".
Ich bin noch ziemlich in den Anfängen von VBA. Ist der Code den Du mir geschickt hast ein Modul (glaube ich eher nicht, weil beim Start aus einem Modul eine Fehlermeldung "compile error" kommt) oder eine User Form?

Gruß
Matthias


Anzeige
Re: Private Sub in User Form
22.01.2003 22:08:01
Tobias
Hi Matthias,

das ist ein Code, welcher abläuft, wenn Du in einer UserForm auf den CommandButton1 drückst.

Kurze Erklärung:

Dim s As String 'Deklaration von s
(Unload Me) 'Ist falsch, muß raus

Const passw = "PASSWORT" 'Hier legst Du Dein Passwort fest

s = InputBox("Geben Sie das Paßwort ein!") 'InputBox für Passworteingabe und Übergabe an Variable s

If s = passw Then 'wenn Passwort richtig, dann Meldung "OK.."
MsgBox "OK Zugriff erlaubt!"
'Hier kannst Du dann weitere Befehle eingeben, die der User dann machen darf z.B.

Sheets("Tabelle1").Activate 'Tabelle1 wird aktiviert

Exit Sub 'Code wird verlassen

Else 'Wenn Passwort falsch

MsgBox "Sie haben keine Zugriffsrechte" 'Meldung
End If
End Sub


Was willst Du mit dieser Abfrage erreichen?

Gruss Tobias


Anzeige
Re: Private Sub in User Form
22.01.2003 22:24:35
Matthias H.
Hallo Tobias,

beim Öffnen der Datei wird ein Passwort abgefragt. Bisher habe ich das so gemacht:

Private Sub Workbook_Open()
'Sheets("blank").Select
Dim sWort As String
sWort = InputBox( _
prompt:="Passwort:", _
Title:="Sicherheitsabfrage", _
Default:="")
If sWort <> "passwort" Then
Beep
MsgBox "Das eingegebene Kennwort ist falsch", _
vbOKOnly, " Loginfehler! "

ThisWorkbook.Close savechanges:=False

Else
Application.ScreenUpdating = False 'Falckern des Bildschirms vermeiden
ActiveWorkbook.Unprotect password:="unprotect"
ActiveWindow.DisplayWorkbookTabs = False 'Registerblätter ausblenden

Sheets("C").Visible = True 'Blatt einblenden
Sheets("C").Select
Sheets("C").ScrollArea = "m2:m2" 'Scrollsperre
ActiveSheet.Protect password:="unprotect"
ActiveWindow.DisplayHeadings = False 'Zeilen beschriftung ausblenden

Application.ScreenUpdating = True


ActiveSheet.Protect password:="unprotect"
ActiveWorkbook.Protect password:="unprotect"

End If
End Sub

(hab ihn stellenweise gekürzt um es hier etwas übersichtlicher zu machen)

Da aber bei der Eingabe das Passwortes dasselbe sichtbar ist, ist das kein richtiger Schutz. Deshalb wollte ich es realisieren, dass statt des Passworts **** erscheint.

Ich habe jetzt aus Deinem code "Unload Me" herausgenommen, und das Makro läuft, aber es wird halt immer noch das Passwort angezeigt.

Gruß
Matthias


Anzeige
Re: Private Sub in User Form
22.01.2003 22:53:01
Tobias
Hallo Matthias,

dann probier das mal.

Nutze Deine UserForm und erstelle eine TextBox.1. Bei der Liste der Eigenschaften gibt es die Eigenschaft "PasswordChar". Hier kannst Du Deine ****** eingeben (oder was anderes).

Dann weise den nachfolgenden Code dem OK-Button (CommandClick1) und Abbrechen-Button zu (CommandClick2).

Private Sub CommandButton1_Click()
Dim s As String
Const passw = "Passwort"

If TextBox1.Text = passw Then
MsgBox "OK Zugriff erlaubt!"
Sheets("Tabelle1").Activate
Exit Sub
Else
Application.DisplayAlerts = False
MsgBox "Sie haben keine Zugriffsrechte auf dieses Blatt"
End If

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Müsste jetzt das sein, was Du wolltest.

Gruss Tobias

Anzeige
Re: Private Sub in User Form
22.01.2003 23:14:02
Matthias H.
Hallo Tobias,

vielen Dank, das klappt. Wie kann ich diese User Form denn in den "Autostart" einbinden? Das heisst beim Öffnen soll sie automatisch erscheinen. Makros kann man ja einfach in "Diese Arbeitsmappe" kopieren, aber UF?

Achja, und noch eine Frage: kann ich Einstellen, dass die OK Taste standardmäßig markiert ist, sodass ich nach Eingabe des Passwortes nur noch Eingabe drücken muß?

Vielen Dank schonmal vorab und für die bisherige Hilfe!!!

Matthias

Re: Private Sub in User Form
22.01.2003 23:29:57
Tobias
Hi Matthias,

zu 1:
Nachfolgenden Code in "Diese Arbeitsmappe" schreiben:

'Automakros zum Sheetstart
Private Sub Workbook_Open()

UserForm1.Show ' (oder wie Du die UserForm genannt hast; ???.Show ruft die UserForm aus)

End Sub

Zu 2:
Ergänze Deine UserForm um folgenden Code

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
CommandButton1_Click
End Sub

Damit brauchst Du gar nix mehr zu machen. Der Code des OK-Buttons wird gleich ausgeführt.

Gruss Tobi


Anzeige
Re: Private Sub in User Form
22.01.2003 23:47:05
Matthias H.
Hallo Tobi,

Du bist echt Spitze. Vielen, vielen Dank. Es funktionert perfekt.

Einen schönen Abend noch.

Gruß
Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige