Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

VBA Zellenüberwachung + Schutz

VBA Zellenüberwachung + Schutz
16.05.2013 09:08:08
Tim
Hallo,
ich wollte in VBA gerne was kleines Programmieren aber leider weiß ich nicht genau wie, deswegen bitte ich um eure Hilfe!
Also:
Ich will das VBA im Tabellenblatt "test123" die Spalte A C und D überwacht.
Dort wird jeweils ein Datum eingetragen.
Ich will es so haben, dass wenn ein Monat vorbei ist z.b. der Mai dann darf man nur noch 14 Tage nach dem 31.05.2013 noch Sachen für den Mai eintragen. Sobald wir z.b. den 16.06.2013 haben müssen die Zellen geschützt werden und eine Mitteilung ausgegeben werden wie z.b.: "Zellen gespeert, bitte wenden sie sich an Herrn XXX"
Eigentlich könnte man auch sagen das der ganze Bereich von A - AK Überwacht werden muss.
Wenn man z.b. einen Eintrag für den 15.05.2013 am 09.06.2013 ändern will dann muss das gespeert sein und ebenfalls wenn man einen ganz neuen Eintrag für diesen Tag eintragen will.
Man darf dann Werte ändern wenn man das Passwort weiß z.b. "PW123"
Also kurz gesagt:
- Wenn man bestehende Einträge bis 14 Tage danach ändern will dann ist es okay
- Wenn man bestehende Werte nach 14 Tage ändern will im Bereich A - AK dann muss eine Fehlermeldung ausgegeben werden, dabei muss VBA auf Spalte A gucken und dann +14 Tage draufrechnen
- Wenn man einen neuen Eintrag für den Monat zuvor machen will dann geht das ebenfalls nur 14 Tage danach, sonst eine Fehlermeldung
Und man kann diese Fehlermeldung nur mit einem Passwort umgehen!
Ich hoffe auf eure Hilfe!
LG
Dennis

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellenüberwachung + Schutz
16.05.2013 09:14:35
Klaus
Hallo Tim-Dennis,
das geht, minus Passwortabfrage, auch ohne VBA! Mit "Daten-Gültigkeit".
Leider hast du in keinem Wort geschrieben, WO deine Datums stehen. Ich nehme an in Spalte A? So oder so, lad bitte eine Mustertabelle hoch.
Zum "Passwort"-Schutz: Ja, das geht. Bringt aber nichts. Ich verdeutliche mal: Einen Passwortschutz unter Excel, wie auch immer geartet, wird von jedem versierten User innerhalb von wenigen Minuten gehackt. Sind die Tools bereits vorhanden, dann innerhalb von Sekunden. Mit Null Vorkentniss und google.de dauerst ne Viertelstunde.
Wenn du nur verhindern willst, dass ein alter Eintrag "aus versehen" geändert wird, dann reicht Excel. Willst du tatsächliche Datensicherheit, musst du dir was anderes überlegen.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Zellenüberwachung + Schutz
16.05.2013 09:22:06
Tim
Hallo Klaus,
anbei die Mustertabelle:
https://www.herber.de/bbs/user/85349.xls
Dautm stehen in A C und D, alle drei müssen ständig überwacht werden.
Und die Einträge dürfen dann bis AK nach "meinen Regeln" nicht mehr geändert werden.
Das mit dem Passwortschutz passt schon, hier wird keiner iwas hacken wollen, wäre halt ein nice to have!

AW: VBA Zellenüberwachung + Schutz
16.05.2013 09:26:57
Klaus
Hallo Tim-Dennis,
ok ... sagen wir mal, ich möchte den Wert in M2 ändern.
in der Zeile gibt es nun drei Datums. welches davon ist denn die Basis der 14-Tage Regel?
Bitte beschreib das ganze vorgehen einmal in Prosa, ungefähr so:
- User ändernt Wert in M2
- Excel checkt, ob Datum in A2 im 14-Tage Rahmen liegt
- Excel gibt Rückmeldung, ob Änderung erlaubt oder nicht
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Zellenüberwachung + Schutz
16.05.2013 09:44:20
Tim
Hallo Klaus, erstmal Danke das du dich um meinem Problem kümmerst.
Also:
- User will Wert in L 2 ändern
- Excel muss checken ob Datum in D 2 im 14 Tage Rahmen liegt
- Falls größer 14 Tage - änderung verhindern - Fehlermeldung : Bitte wenden sie sich an Ihren Administrator
- Der Bereich E 2- AK 2 müsste überwacht werden!
- User will neuen Eintrag hinzufügen
- Excel muss checken ob das eingegebene Datum in A&C&D im 14 Tage Rahmen liegt
- Falls Datum länger als 14 Tage zurück liegt - Fehlermeldung
Die Überwachung muss bis Zeile 2000 gehen!

Anzeige
AW: VBA Zellenüberwachung + Schutz
16.05.2013 10:10:44
Klaus
Hallo Dennis-Tim,
Die Überwachung muss bis Zeile 2000 gehen!
bis exakt Zeile 2000, oder egal wie weit? Es ist einfacher, die ganze Spalte zu überprüfen.
- User will Wert in L 2 ändern
- Excel muss checken ob Datum in D 2 im 14 Tage Rahmen liegt
- Falls größer 14 Tage - änderung verhindern - Fehlermeldung : Bitte wenden sie sich an Ihren Administrator
- Der Bereich E 2- AK 2 müsste überwacht werden!

Dazu, kopiere folgende Makros direkt in den Code des Blattes:
Option Explicit
Public oldValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
'von Spalte 5-37 überwachen
Const iColMin As Long = 5
Const iColMax As Long = 37
'Prüfdatum in Spalte D
Const iColDate As Long = 4
'Toleranz 14 tage
Const iToleranz As Integer = 14
'Admin-Passwort (im Klartext - aber Excel ist eh nicht sicher)
Const sPass As String = "IchBinAdmin"
Dim bReset As Boolean
bReset = False
If Target.Column >= iColMin And Target.Column 

Das begreife ich noch nicht:
- User will neuen Eintrag hinzufügen
- Excel muss checken ob das eingegebene Datum in A&C&D im 14 Tage Rahmen liegt
- Falls Datum länger als 14 Tage zurück liegt - Fehlermeldung

Wo werden denn neue Einträge hinzugefügt? Unter die letzte Zeile? Da stehen noch keine Datums.
Ich sehe auch keine ab E leere Zeile, die als "Neueintrag" in Frage käme.
Sagen wir mal, in A C und D 93 ständen Datums. Hier möchte ich neu Eintragen.
Jetzt solll Excel prüfen ob,
- eines der drei Datums innerhalb der Toleranz liegt oder
- jedes der drei Datums innerhalb der Toleranz liegt?
Nebenbei:
auch ohne "Hack" kann ich ja einfach das Datum in D2 ändern, dann einen Wert nach L2 schreiben, und dann das alte Datum wieder in D2 schreiben. Aber ich nehme an, das wirst du mit Blattschutz lösen.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Zellenüberwachung + Schutz
16.05.2013 10:16:36
Tim
Ja genau, ich will z.b. in Zeile 103 in A C und D das Datum 01.05.2013 eintragen und das liegt ja schon über 14 Tage zurück, also muss eine Fehlermeldung erscheinen, denn man darf nur höchstens für 14 Tage zurück neue Datensätze eintragen!
Excel soll in A C und D bei NEUEN Einträgen vergleichen!

AW: VBA Zellenüberwachung + Schutz
16.05.2013 10:33:14
Klaus
Vielleicht so? Rudis Beiträge und deine Antworten habe ich noch nicht gelesen, mache ich jetzt.
Option Explicit
Public oldValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
'von Spalte 5-37 überwachen
Const iColMin As Long = 5
Const iColMax As Long = 37
'Prüfdatum in Spalte D
Const iColDate As Long = 4
'Toleranz 14 tage
Const iToleranz As Integer = 14
'Admin-Passwort (im Klartext - aber Excel ist eh nicht sicher)
Const sPass As String = "IchBinAdmin"
'in diesen Spalten werden neue Datums überprüft
Const iColA As Long = 1
Const iColB As Long = 3
Const iColC As Long = 4
Dim bReset As Boolean
Dim bAdmin As Boolean
bReset = False
bAdmin = False
If Target.Column >= iColMin And Target.Column 
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Zellenüberwachung + Schutz
17.05.2013 11:25:59
Tim
Dein Code gefällt mir sehr gut!
Könnte man noch einbauen, dass Spalte G von der Überwachung außen vor bleibt?
Spalte G darf man jeder Zeit ändern!

AW: VBA Zellenüberwachung + Schutz
19.05.2013 14:35:40
Klaus
Hallo Tim,
fährst du jetzt zweigleisig? Unten schreibst du du nutzt Rudis Code, hier meinen ...
Egal. Ändere einfach diese Zeile
If Target.Column >= iColMin And Target.Column 

in diese
If Target.Column >= iColMin And Target.Column  and target.column  7 Then

Dann ist Spalte G aussen vor.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Zellenüberwachung + Schutz
21.05.2013 07:40:24
Tim
DANKE!!!!!

Danke für die Rückmeldung! owT
21.05.2013 08:09:20
Klaus
.

und wo ist nun die Frage ?
16.05.2013 09:17:42
Matthias
Hallo Dennis
Ich will ...
Ich will es so haben ...

So liest sich das!
Aber ich habe im Beitragstext keine einzige Frage gefunden.
Gruß Matthias

OT: etwas zu empfindlich, Matthias?
16.05.2013 09:21:52
Klaus
Hallo Matthias,
ich unterstütze ja generell das durchsetzen der Forumsetiquette usw, aber kann es sein dass du etwas zu empfindlich bist / wirst?
Ich sehe in diesem Beitrag:
- Anrede
- Gruß
- Problembeschreibung
- zweimaliges "Ich hoffe auf eure Hilfe!" (was als Frage durchgeht)
- Absätze, Interpunktion, Groß- und Kleinschreibung, offensichtlich Mühe bei der Frage gegeben
nach meiner Sicht gibt es an dieser Anfrage Null zu kritisieren. Oder?
Grüße,
Klaus M.vdT.

Anzeige
ich sehe es eben manchmal etwas kritischer ...
16.05.2013 09:38:30
Matthias
Hallo
... und ich habe mich auch nicht im Ton vergriffen.
Ich habe nur nachgfragt und geschrieben wie sich das liest.
Ich bin generell, ganau wie alle Anderen hier im Forum bereit zu helfen.
Deshalb treffen wir uns ja hier täglich.
Aber meine Meinung werde ich immer sagen/schreiben.
Dem Einen ist das egal den Anderen störts. So ist es halt.
Das war so nicht von Dennis gefordert, aber
für mich hat es sich so gelesen ...
Ich will...
Ich will es so haben ...

also macht das mal bitte für mich
Das ist kein Angriff auf Tim(Dennis), das sollte er auch nicht so auffassen!
Ich wollte nur wissen welche Frage er denn hat.
Alles gut ? :-)
Gruß Matthias

Anzeige
AW: ich sehe es eben manchmal etwas kritischer ...
16.05.2013 09:46:02
Klaus
Hi Matthias,
Alles gut ? :-)
War nie was schlecht!
In den allermeisten Fällen stimme ich deiner Kritik ja auch zu, oder äußere sie sogar selbst. Nur in diesem Fall fand ich sie halt übertrieben - der Beitrag hat sich für mich eben nicht so übertriebend fordern gelesen, wie er bei dir ankam. Emoticons hin oder her, dem Internet fehlt immer noch Betonung und Körpersprache.
Hast du eigentlich inzwischen was von Josef gehört?
Grüße,
Klaus M.vdT.

OT (Sepp) Nein, leider noch nichts gehört kwT
16.05.2013 09:49:01
Matthias

:-) Danke ! kwT
16.05.2013 23:30:46
Matthias

...Womit du auch recht hast, denn das ist ...
16.05.2013 13:35:04
Luc:-?
…genau der Fehler, den viele machen, Matti,
vor lauter Problembeschreibung vergessen sie die konkrete Frage, so dass das Ganze dann (in Foren) wie ein GesamtAuftrag wirken kann. Oder es wdn (noch häufiger) Ja-Nein-Fragen gestellt. Oft auch verdeckt der bereits eingeschlagene (ineffektive) Lösungsweg das eigentliche Problem.
Auf das alles wird übrigens auch immer wieder bei Dozenten-/„Problemlöser“{;-)}-Schulungen u.Ä. hingewiesen, da dann das eigentliche Problem erst gefunden resp herausgearbeitet wdn muss.
Gruß Luc :-?

als Ansatz
16.05.2013 10:06:07
Rudi
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
Const strPW As String = "test123"
If Not Intersect(Target, Range("A:AK")) Is Nothing Then
On Error GoTo ERREXIT
Application.EnableEvents = False
If Target.Count > 1 Then
'mehrere Zellen ausgewählt
Application.Undo
Else
If Target.Column = 1 Then
'Änderung in A
If Target  "" Then
If Target  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
Else
'Änderung in B:AK
If Cells(Target.Row, 1) = "" Then
'A leer
Application.Undo
Else
If Cells(Target.Row, 1)  "" Or _
Cells(Target.Row, 4)  "" Then
If Application.InputBox("Passwort")  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
End If
End If
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Gruß
Rudi

AW: als Ansatz
16.05.2013 10:24:21
Tim
Vielen Dank!
Wie ist denn das Passwort eigentlich? :)

AW: als Ansatz
16.05.2013 10:27:14
Tim
ahhh habe es übersehen!
Eigentlich ist dein Code genau den den ich haben wollte! Respekt!

AW: als Ansatz
16.05.2013 10:30:22
Tim
Allerdings kann ich bei deinem Code keine Zeilen mehr löschen!
Kann man es noch so einrichten, dass Zeilen löschen jederzeit möglich ist, allerdings nur mit Passwort?
LG

AW: als Ansatz
16.05.2013 10:40:46
Rudi
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
Const strPW As String = "test123"
If Not Intersect(Target, Range("A:AK")) Is Nothing Then
On Error GoTo ERREXIT
Application.EnableEvents = False
If Target.Count > 1 Then
If Target.Count = Columns.Count Then
'ganze Zeile
If Application.InputBox("Passwort")  strPW Then
MsgBox "test"
Application.Undo
End If
Else
'mehrere Zellen ausgewählt
Application.Undo
End If
Else
If Target.Column = 1 Then
'Änderung in A
If Target  "" Then
If Target  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
Else
'Änderung in B:AK
If Cells(Target.Row, 1) = "" Then
'A leer
Application.Undo
Else
If Cells(Target.Row, 1)  "" Or _
Cells(Target.Row, 4)  "" Then
If Application.InputBox("Passwort")  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
End If
End If
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Gruß
Rudi

AW: als Ansatz
17.05.2013 07:22:23
Tim
Noch eine kleine und letzte kleinigkeit:
Spalte G soll außen vor bleiben, also dort soll es keinen schutz geben, wie sieht der code dafür aus?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige