Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1852to1856
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

Zellbereich schützen vor Bearbeitung

Zellbereich schützen vor Bearbeitung
05.11.2021 10:09:11
Smile
Guten Morgen,
folgendes: Ich habe eine Datei welche Kennwortgeschützt ist und habe ein Kontextmenü womit ich diese Datei bearbeite. Dazu wird in der Funktion immer der Kennwortschutz entfernt. Nun habe ich das Problem das auch die Zellen bearbeitet werden können die ich nicht bearbeiten darf. Habe einen Bereichsnamen für diese Zellen vergeben.(Schutz)
Kann ich irgendwie sagen das dieser Bereich td nicht bearbeitet werden kann ? Hatte es versucht mit Range("Schutz").locked = False, hat aber irgendwie nicht funktioniert.
Hier der Code:

Sub Färbe(ByVal sBereich As String)
Dim rng As Excel.Range
Dim vntInput As Variant
Call ActiveSheet.Unprotect(Password:="test")
Select Case Application.CommandBars.ActionControl.Caption
Case Is = "Eintrag löschen"
With Selection
.Interior.PatternColorIndex = xlNone
.Value = vbNullString
ActiveCell.Comment.Delete
End With
Case Is = "Bemerkung"
Do
vntInput = InputBox(Prompt:="Bitte etwas eingeben.", Title:="Eingabe")
If StrPtr(vntInput) = 0 Then Exit 

Sub 'Abbrechen gedrückt
If Trim$(vntInput) = "" Then
Call MsgBox(Prompt:="Bitte etwas eingeben.", Buttons:=vbExclamation)
Else
Exit Do
End If
Loop
For Each rng In Selection
With rng
If Not .Comment Is Nothing Then Call .Comment.Delete
Call .AddComment(Text:=vntInput)
End With
Next
Case Else
For Each rng In Selection
With rng
.Interior.Color = Application.Names(sBereich).RefersToRange.Interior.Color
.Value = Application.Names(sBereich).RefersToRange.Value
End With
Next
End Select
Call ActiveSheet.Protect(Password:="test", userinterfaceonly:=True, AllowFiltering:=True)
End Sub

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbereich schützen vor Bearbeitung
05.11.2021 11:18:19
Peter
Wenn du das Blatt entschützt ist alles entschützt. Aber du kannst abfragen, ob eine Änderung in einer der verbotenen Zellen gemacht wurde und ein Undo auslösen und eine Msgbox "Darfst du nicht"...
AW: Zellbereich schützen vor Bearbeitung
05.11.2021 13:34:44
Smile
Wie geht das denn mit dem "Darfst du nicht " ? Bin leider nicht so bewandert was vba angeht und habe diese Datei so in die Finger bekommen zum bearbeiten..
MfG
AW: Zellbereich schützen vor Bearbeitung
05.11.2021 13:35:33
Smile
Die Seite funktioniert nicht leider
MfG
AW: Zellbereich schützen vor Bearbeitung
05.11.2021 14:26:49
Rudi
Hallo,
das

Call ActiveSheet.Protect(Password:="test", userinterfaceonly:=True, AllowFiltering:=True)
schreibst du einfach an den Anfang deines Codes und nimmst die Zeile

Call ActiveSheet.Unprotect(Password:="test")
raus.
Dann sind Änderungen durch Code zulässig aber nicht von Hand.
Gruß
Rudi
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 06:50:43
Smile
Guten Morgen,
das ändert ja nichts daran das der gesamte Bereich bearbeitet werden kann.
Aber der Bereich A2:AG4;A5:B127 soll nicht mehr zu bearbeiten sein und der Rest schon.
MfG
Anzeige
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 08:40:12
Pierre
Hallo,

Sub Entsperren()
Worksheets"(Tabelle1").Unprotect Password:="XXX"    'Paswort und Blatt anpassen
Range("A2:AG4").Locked = True
Range("A5:B127").Locked = True
Worksheets("Tabelle1").Protect Password:="XXX"      'Passwort und Blatt anpassen
End Sub
Bei mir gehts. Das auf einen Button legen. Oder mit "Private Sub Workbook_Open()" auch unter "DieseArbeitsmappe" ablegen, dann brauchst du keinen Button.
Gruß Pierre
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 09:20:17
Smile
Guten Morgen,
Irgendwie klappt es nicht.
Habe das in meine Workbook Open reingehauen beziehungsweise aufgerufen trotzdem, kann ich mit dem Kontextmenü alles bearbeiten.
https://www.herber.de/bbs/user/148999.zip
Hier einmal die Datei, vielleicht hilft das ja
MfG
Anzeige
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 14:33:37
Pierre
Hallo,
so gehts:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.Unprotect Password:="KdoSAN"
Range("A2:AG4").Locked = True
Range("A5:B128").Locked = True
ActiveSheet.Protect Password:="KdoSAN"
End Sub
Ob da jetzt Konflikte aufgrund deiner bestehenden Makros entstehen, kann ich nicht sagen.
Gruß Pierre
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 15:40:07
Smile
Kann es trodzdem noch mit meinem Kontextmenü bearbeiten.
Denke das dieses immer das Ganze Blatt entsperrt und es dadurch geht. Würde es eine Möglichkeit geben einfach zu sagen wenn es der Zellbereich ist das dann eine Messagebox kommt "Du darfst das nicht " oder "nicht möglich"
MfG
Anzeige
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 16:16:12
Pierre
Was für ein Kontextmenü meinst du eigentlich?
Normale Eingaben in diesem Bereich sind nicht möglich.
Achja: Durch das "SheetActivate"-Ereignis musst du nach dem Öffnen der Mappe einmal das Blatt wechseln, damit es wirksam wird.
Bei Workbook_Open hats immer gemeckert wegen der Range.Locked.
Aber ich hab ja gesagt, kein Plan ob es wegen deiner ganzen anderen Makros zu Problemen kommen könnte. Das ist natürlich möglich.
AW: Zellbereich schützen vor Bearbeitung
08.11.2021 16:21:07
Smile
Ich habe in meiner Datei ein neues Kontextmenü mit den Daten die man einfügen kann in den Monaten wie zum Beispiel Urlaub usw.
Und es ist immer noch so das wenn ich den Code implementiere und auch das Blatt wechsle das ich dort wo zum Beispiel die Namen stehen sollen, dann die Zeile überschreiben kann mit Urlaub.
MfG
Anzeige
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 08:51:08
Pierre
Hallo,
nun habe ich es...Da ich gestern mal alles rausgeworfen hatte, hatte ich natürlich auch dein Menü nicht mehr.
Ich würde folgendes vorschlagen: Du machst den generellen Blattschutz trotzdem (sodass die beiden genannten Bereiche auch durch Tastatureingabe nicht geändert werden können.) Das klappt ja an sich, oder?
In jedem Modul der Blätter müsstest du ganz unten das BeforeRightClick-Ereignis ändern zu:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("C5:AG127")) Is Nothing Then Exit Sub
If Selection.Address = Intersect(Target, Range("C5:AG127")).Address Then
Cancel = True
CommandBars("MyCommandBar").ShowPopup
End If
End Sub
Das jetzt Beispielhaft für "Jan". Dadurch öffnet sich dein eigenes Menü nur, wenn man im o. g. Bereich rechtsklickt!
Mit einer Variablen (letzteZeile) kannst du es auch dynamisch halten, weil der Bereich ja in jedem Monat anders ist. Habe jedenfalls gesehen, manchmal gehts bis Zeile 127, dann mal nur bis 125 usw.
Wäre halt optional.
Gruß Pierre
Anzeige
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 11:15:11
Smile
Das funktioniert irgendwie nicht , habe das so eingebettet aber er will das nicht machen magst du mal drber gucken oder kann man einfach ne message box machen das man es nicht darf ?
MfG
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 11:39:50
Smile
Das funktioniert irgendwie nicht , habe das so eingebettet aber er will das nicht machen magst du mal drber gucken oder kann man einfach ne message box machen das man es nicht darf ?
MfG
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 14:02:44
Pierre
Hier mal deine Datei zurück:

https://www.herber.de/bbs/user/149030.zip

Ich habe dir dort mal beispielhaft für Jan und Feb den Code eingefügt. Zu finden in den Modulen der jeweiligen Arbeitsblätter, ganz am Ende.
Außerdem habe ich die von mir vorgeschlagene Änderung bzgl. des Bereichschutzes noch eingefügt.
Wenn du nun irgendwo im Bereich C5 bis AG128 rechts klickst, erscheint dein eigens erstelltes Menü.
Außerhalb dieses Bereichs kommt das normale (mit Ausschneiden, Kopieren, bla bla bla)
Gruß Pierre
Anzeige
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 14:28:40
Smile
Hä bei mir kommt immer ein altes Menü von mir früher , komisch.
Aber danke gucke woran das liegen könnte, vielleicht ist da irgendwas im Cache oder so .
MfG
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 15:08:55
Smile
Habe das Makro jetzt so abgeändert das man in dem Bereich wo ich es will was bearbeiten kann und bei dem anderem gibt er mir eine MsgBox mit Fehler aus .
Habe nur noch ein Problem er sagt mir nun danach Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt.
Kannst du mir dabei weiterhelfen?
Hier der geänderte Code:


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("C5:AG128")) Is Nothing Then MsgBox "Fehler!", vbOKOnly
If Selection.Address = Intersect(Target, Range("C5:AG128")).Address Then
Cancel = True
CommandBars("MyCommandBar").ShowPopup
End If
End Sub

Anzeige
AW: Zellbereich schützen vor Bearbeitung
09.11.2021 15:47:15
Pierre
Versuch es mal hiermit:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("C5:AG128")) Is Nothing Then MsgBox "Fehler!", vbOKOnly
If Not Intersect(ActiveCell, Range("C5:AG128")) Is Nothing Then
Cancel = True
CommandBars("MyCommandBar").ShowPopup
End If
End Sub

AW: Zellbereich schützen vor Bearbeitung
10.11.2021 06:28:51
Smile
Hat funktioniert, danke !!
Auch für deine ganze Geduld mit mir =)
MfG
bitteschön... achja:
10.11.2021 08:04:35
Pierre
das sieht zwar komisch aus, aber komischerweise lief es nur ohne Probleme durch, wenn ich bei "If Not Intersect" mit ActiveCell gearbeitet habe.
Darüber in der Zeile ging es mit Target.
Hatte aber auch nicht mehr versucht, beides auf ActiveCell umzustellen. Kannst du ja selbst noch ausprobieren, falls es dich stört (mich perfektionistischen Spinner stört das :D ).
Gruß Pierre
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige