Antwort 2 von coros vom 30.12.2019, 06:02 Options
Moin,
ich habe die Frage anders als @Peko, der ja beschrieben hat, wie man das VBA-Projekt schützt, verstanden. Ich sehe das so, dass Hansel, bevor die Daten endgültig gelöscht werden, eine Passwortabfrage erscheint. Bei richtiger Eingabe werden die Daten gelöscht, bei falscher Eingabe nicht.
Nachfolgend mal ein Beispiel, wie man das realisieren könnte. Ein Beispiel nur deshalb, weil @hansel sein bestehendes Makro leider nicht aufgeführt hat.
Nachfolgender Beispielcode muss ganz am Anfang Deines Makros eingefügt werden.
[b]Dim varPW As Variant
'Variable, in die das Passwort, das in eine Inputbox eingetragen wird, geschrieben wird.
varPW = InputBox("Diese Funktion ist nur berechtigten Personen erlaubt und daher mit einem Passwort geschützt.")
'Wenn die Variable leer ist (leer, wenn kein Passwort eingegeben wurde) oder wenn die Variable _
den Zustand "False" hat (False, wenn die Abbrechen-Schaltfläche betätigt wurde), dann Prozedur beenden
If varPW = "" Or varPW = False Then Exit Sub
'Abfrage ob eingetragenes Passwort korrekt ist. Wenn das Passwort korrekt war, eine Meldung am _
Bildschirm ausgeben. Meldung hier nur für dieses Beispiel. Anstelle der Zeile mit der Messagebox-Funktion, _
müsste dann das weitere Makro zwischen der Zeile mit der "If-Anweisung" und dem Wort "Else" aufgeführt werden
If varPW = "Hier das Passwort" Then
'Anstelle der MessageBox-Ausgabe die Funktionen, also die Löschfunktionen, die dann ausgeführt werden sollen, _
hier eintragen.
MsgBox "Passowrt O.K."
Else
MsgBox "Das war leider das falsche Passwort", vbCritical, "Passwortfehler..."
End If
[/b]
Wie bereits geschrieben, wäre Dein Makro bekannt, hätte man das gleich in Dein Makro einarbeiten können.
Ich hoffe, Du meintest das so. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von hansel vom 30.12.2019, 13:31 Options
Hallo peko, hallo oliver!
Vielen Dank für eure super schnellen Antworten!
Zu Peko: Kriege das irgendwie nicht hin. Wenn ich das VBA Projekt durch Passwort schütze, kann das Steuerelement trotzdem ohne Nachfrage den Befehlt "Löschen der Daten" durchführen.
Zu Oliver: So soll es aussehen. Kriege den Code nicht so richtig eingebaut. Habe nicht die große Ahnung von VBA. Das Makro habe ich nur durch aufzeichnen so hinbekommen.Würde es Dir viel ausmachen, mir den Code in mein Makro einzubauen?
Das Makro:
Sub Daten_löschen()
'
' Daten_löschen Makro
' Makro am 29.12.2007 von Hans-Jörg Müller aufgezeichnet
'
'
Sheets("Lieferscheine").Select
Range("B13:BI43").Select
ActiveWindow.SmallScroll Down:=9
Range("B13:BI43,B52:BI80").Select
Range("BI52").Activate
ActiveWindow.SmallScroll Down:=10
Range("B13:BI43,B52:BI80,B89:BI119").Select
Range("B89").Activate
ActiveWindow.SmallScroll Down:=6
Range("B13:BI43,B52:BI80,B89:BI119,B128:BI157").Select
Range("BI128").Activate
ActiveWindow.SmallScroll Down:=5
Range("B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196").Select
Range("B166").Activate
ActiveWindow.SmallScroll Down:=10
Range("B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234").Select
Range("BI205").Activate
ActiveWindow.SmallScroll Down:=9
Range("B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273" _
).Select
Range("B243").Activate
ActiveWindow.SmallScroll Down:=6
Range( _
"B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312" _
).Select
Range("BI282").Activate
ActiveWindow.SmallScroll Down:=7
Range( _
"B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312,B321:BI350" _
).Select
Range("B321").Activate
ActiveWindow.SmallScroll Down:=10
Range( _
"B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312,B321:BI350,B359:BI389" _
).Select
Range("BI359").Activate
ActiveWindow.SmallScroll Down:=10
Range( _
"B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312,B321:BI350,B359:BI389,B398:BI427" _
).Select
Range("B398").Activate
ActiveWindow.SmallScroll Down:=8
Range( _
"B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312,B321:BI350,B359:BI389,B398:BI427,B436:BI466" _
).Select
Range("BI436").Activate
Selection.ClearContents
End Sub
Vielen Dank nochmal an Euch!
MfG
Hans-Jörg
Antwort 4 von coros vom 30.12.2019, 16:06 Options
Hallo Hans Jörg,
dann sieht Dein Makro wie folgt aus:
[b]Option Explicit
Sub Daten_löschen()
Dim varPW As Variant
'Variable, in die das Passwort, das in eine Inputbox eingetragen wird, geschrieben wird.
varPW = InputBox("Diese Funktion ist nur berechtigten Personen erlaubt und daher mit einem Passwort geschützt.")
'Wenn die Variable leer ist (leer, wenn kein Passwort eingegeben wurde) oder wenn die Variable _
den Zustand "False" hat (False, wenn die Abbrechen-Schaltfläche betätigt wurde), dann Prozedur beenden
If varPW = "" Or varPW = False Then Exit Sub
'Abfrage ob eingetragenes Passwort korrekt ist. Wenn das Passwort korrekt war, eine Meldung am _
Bildschirm ausgeben. Meldung hier nur für dieses Beispiel. Anstelle der Zeile mit der Messagebox-Funktion, _
müsste dann das weitere Makro zwischen der Zeile mit der "If-Anweisung" und dem Wort "Else" aufgeführt werden
If varPW = "Hier das Passwort" Then
'Anstelle der MessageBox-Ausgabe die Funktionen, also die Löschfunktionen, die dann ausgeführt werden sollen, _
hier eintragen.
Sheets("Lieferscheine").Activate
Range("B13:BI43,B52:BI80,B89:BI119,B128:BI157,B166:BI196,B205:BI234,B243:BI273,B282:BI312,B321:BI350,B359:BI389,B398:BI427,B436:BI466").ClearContents
Else
MsgBox "Das war leider das falsche Passwort", vbCritical, "Passwortfehler..."
End If
End Sub[/b]
Tausche obiges Makro gegen Deines aus. Du musst in dem Makro in der Zeile
[b]If varPW = "[u]Hier das Passwort[/u]" Then
[/b]
Dein Passwort zwischen die beiden Anfühtungszeichen ( "" ) eintragen und dann sollte Dir immer wenn das Makro ausgeführt wird, eine Passwortabfrage vorgeschaltet sein.
Abschließend solltest Du dann wie von @peko beschrieben, Dein VBA-Projekt mit einem Passwort schützen. Somit kann man nicht sofort Dein Passwort für diese Abfrage einsehen. Ist zwar kein 100%iger Schutz, aber für die anderen Mitarbeiter sollte der Schutz reichen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.