Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro mit Passwort schützen





Frage

Hallo, ihr fleißigen Helfer! Ich habe mir in Excel eine aufwendige Mitarbeiterkartei angelegt. Am Jahresende möchte ich alle eingegebenen Daten löschen. Dazu habe ich mir ein Steuerelement mit einem Makro eingebaut, mit dem ich auf Knopfdruck alle Daten lösche. Meine Frage ist. Kann ich dieses Steuerelement durch ein Passwort schützen, so dass nicht jeder aus Versehen diese Daten löschen kann? Vielen Dank im Voraus Mit freundlichen Grüßen HJ

Antwort 1 von peko

Hallo Hansel!

Mit Alt+F11 wechselst du zu VBA.

Danach klickst du mit der rechten Maustaste auf das zu schützende Modul.

Dann: Eigenschaften von VBAProject

Registerkarte Schutz wählen.

Den Rest schaffst du dann schon allein!

Gruß
peko

Antwort 2 von coros

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.

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


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

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

Hallo Hans Jörg,

dann sieht Dein Makro wie folgt aus:

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

Tausche obiges Makro gegen Deines aus. Du musst in dem Makro in der Zeile

If varPW = "Hier das Passwort" Then
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.

Antwort 5 von hansel

Hallo Oliver!
Ich sitze hier und bin immer wieder erstaunt, was mit Excel alles möglich ist.Es funktioniert!
Genau so, wie Du das gemacht hast, wollte ich das haben!Das hätte ich in Generationen nicht geschafft.Tausend Dank für Deine Mühe und Hilfe!!!

MfG und einen guten Rutsch
Hans-Jörg

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: