Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1716to1720
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

Arbeitsmappenschutz aufheben im Worksheet_Change

Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 13:18:17
EasyD
Hallo zusammen
Ich habe auf einem Blatt mit Datengültigkeit ein Dropdown mit den Werte ja und nein
Bei Auswahl dieses Feldes (=CellsBuch) möchte ich ein anderes Blatt ein und ausbleden mit dem Code unten.
Fehler - Visible-Eigenschaft kann nicht festgelegt werden
Liegt sicherlich an dem Arbeitsmappenschutz.
Den schalte ich ein und aus mit:
Sub ProtectMap_off()
ActiveWorkbook.Protect Password = Sheets("Datenerfassung").Range("S1").Value
End Sub
ProtectMap_on entsprechend anders rum
Und nun der problematische der Code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellsBuch As Range
Set CellsBuch = Range("G189")
If Not Intersect(CellsBuch, Target) Is Nothing Then
Call ProtectMap_off
If CellsBuch.Value = "nein" Then
Sheets("Buchungsdaten").Visible = False
Else
Sheets("Buchungsdaten").Visible = True
End If
Call ProtectMap_on
End If
End Sub
Ich mache in dem Worksheet_Change auch noch jede Menge andere Sachen, aber nur an der Stelle mit der If-Abfrage für CellsBuch funktioniert es nicht (ist auch die einzige Stelle wo ich den Arbeitsmappenschutz aufheben muss um die Aktion durchzuführen - oder geht das auch ohne die Aufhebung des Schutzes?)
Wer kann mir sagen wo das Problem liegt?
Danke!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 13:56:54
Hajo_Zi
es reicht
Sheets("Buchungsdaten").Visible = CellsBuch.Value "nein"
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?

AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:07:22
EasyD
Hallo Hajo
Danke erstmal für dein Feedback!
Habe
Sheets("Buchungsdaten").Visible = CellsBuch.Value "nein"
verwendet, ist ja auch deutlich übersichtlicher als mein Versuch. Danke dafür!
Änder aber leider nichts.
Zum Thema Datei verlinken ja/nein:
Natürlich baust du nix nach, ist ja auch vollkommen verständlich und das erwarte ich auch selbstverständlich nicht. Ich dachte nur mit meinen Erklärungen oben wäre das Problem beschrieben...
Dann frage ich mal anders:
Kann das Problem mit der Visible-Eigenschaft auch noch andere Ursachen als den Arbeitsmappenschutz haben?
Die Codes ProtectMap_on und ProtectMap_off laufen beim Einzelaufruf fehlerfrei, egal auf welchem Blatt ich die starte...
Anzeige
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:29:28
Hajo_Zi
NEIN. Nach meinem Wissen.
Ich bin dann raus. Warum Stand ja schon in meinem Beitrag.
Viel Erfolg noch.
Gruß Hajo
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:34:09
EasyD
ok
trotzdem danke
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:34:11
EasyD
ok
trotzdem danke
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:09:08
Nepumuk
Hallo,
im Makro "ProtectMap_off" wendest du die "Protect" - Methode an. Richtig wäre aber "UnProtect".
Gruß
Nepumuk
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:14:55
EasyD
Oha
na das ist ja mal wieder ganz was neues... gibt immer was zu lernen hier! Danke!
hab's geändert, er scheint das jetzt auch machen zu wollen.
Allerdings werd ich jetzt angemeckert mein Passwort würde nicht stimmen.
Das Passwort steht in der Zelle S1 im Blatt "Datenerfassung"
Bei der Protect Methode akzeptiert er das
Bei Unprotect nicht....
Anzeige
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:18:03
EasyD
Also so sieht das ganze aus, steht in einem Modul natürlich:
Sub ProtectMap_on()
ActiveWorkbook.Protect Password = Sheets("Datenerfassung").Range("S1").Value
End Sub

Sub ProtectMap_off()
ActiveWorkbook.Unprotect Password = Sheets("Datenerfassung").Range("S1").Value
End Sub

AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 15:32:41
Nepumuk
Hallo,
keine Ahnung, ich kenne deine Mappe nicht.
Gruß
Nepumuk
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 20:51:36
EasyD
Hey
Trotzdem Danke
Ich würd's ja hoch laden, aber da sitze ich den halben Tag davor das Ding zu entfremden...
Ich mach das ganze jetzt ohne Passwort, das funktioniert.
Ich hoffe der Anwender kommt halt nicht auf die Idee den Knopf zum Arbeitsmappenschutz zu drücken und dran rum zu pfuschen.
Anzeige
AW: Arbeitsmappenschutz aufheben im Worksheet_Change
27.10.2019 14:33:16
EasyD
Also in irgendeiner Form hängt das mit dem Worksheet_Change zusammen
Einzeln laufen beide Codes Problemlos
Ich will die aber bei Änderung der Zelle CellsBuch ausführen, je nachdem ob "ja" oder "nein"
Hier mal der Ganze Code, ist noch eine ziemliche Baustelle, alles was noch nicht läuft ist auskommentiert:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellsE As Range, CellsF As Range, CellsG As Range, CellsGes As Range, CellsIcon As Range,  _
CellsImage As Range, CellsAS As Range, CellsBuch As Range, CellsoB As Range, CellsMiete As Range
''''Dim tabArray As Variant
''''Dim i As Long
'Zellbereiche definieren
Set CellsE = Range("E84:E88, E91:E95")
Set CellsF = Range("F84:F88, F91:F95")
Set CellsG = Range("G84:G88, G91:G95")
Set CellsGes = Range("E84:G88, E91:G95")
Set CellsIcon = Range("Y11")
Set CellsImage = Range("BG25") 'Vorschau auf das Berechnungsergebnis
Set CellsAS = Range("AL17, AQ17") 'AuswahlAS1 und AuswahlAS2
Set CellsBuch = Range("G189") 'Auswahl Buchungsdaten ja/nein im Menü
Set CellsoB = Range("BG25")
''''' _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'''''Tabreihenfolge festlegen
''''tabArray = Array("Y7", "Y9", "Y11", "X17", "Y19")
''''For i = LBound(tabArray) To UBound(tabArray)
''''    If tabArray(i) = Target.Address("X21") Then
''''        If i = UBound(tabArray) Then
''''            Me.Range(tabArray(LBound(tabArray))).Select
''''        Else
''''            Me.Range(tabArray(i + 1)).Select
''''        End If
''''    End If
''''Next i
''''' _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ActiveSheet.Shapes.Range(Array("Picture 9")).Visible = CellsIcon  ""
ActiveSheet.Shapes.Range(Array("Vorschau")).Visible = CellsImage  "nein"
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Target.Interior.Color = 9671679 Then
Call Protect_off
Target.Interior.ColorIndex = xlNone
Call Protect_on
End If
'xxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Not Intersect(CellsGes, Target) Is Nothing Then
'Wenn Änderungen in Spalte E:
If Not Intersect(CellsE, Target) Is Nothing Then
Call Protect_off
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("A1:A6,B1:B5")) Is Nothing Then
Target.Interior.ColorIndex = ((Target.Interior.ColorIndex = xlNone) * -3)
End If
Cancel = True
With CellsE.Interior
.Pattern = xlNone 'kein Hintergrund
End With
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
With CellsF.Interior
.Color = 15652797 'Hintergrund einfärben
End With
With CellsG.Interior
.Color = 15652797
End With
Application.EnableEvents = True
Call Protect_on
End If
'Wenn Änderungen in Spalte F:
If Not Intersect(CellsF, Target) Is Nothing Then
Call Protect_off
Application.EnableEvents = False
With CellsF.Interior
.Pattern = xlNone
End With
CellsE.ClearContents
CellsG.ClearContents
CellsE.Locked = True
CellsG.Locked = True
With CellsE.Interior
.Color = 15652797
End With
With CellsG.Interior
.Color = 15652797
End With
Application.EnableEvents = True
Call Protect_on
End If
'Wenn Änderungen in Spalte G:
If Not Intersect(CellsG, Target) Is Nothing Then
Call Protect_off
Application.EnableEvents = False
With CellsG.Interior
.Pattern = xlNone
End With
CellsE.ClearContents
CellsF.ClearContents
CellsE.Locked = True
CellsF.Locked = True
With CellsE.Interior
.Color = 15652797
End With
With CellsF.Interior
.Color = 15652797
End With
Application.EnableEvents = True
Call Protect_on
End If
If Application.CountA([E84:G88, E91:G95]) = 0 Then
Call Protect_off
CellsE.Locked = False
CellsF.Locked = False
CellsG.Locked = False
With CellsE.Interior
.Pattern = xlNone
End With
With CellsF.Interior
.Pattern = xlNone
End With
With CellsG.Interior
.Pattern = xlNone
End With
Call Protect_on
End If
End If
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Not Intersect(CellsAS, Target) Is Nothing Then
If Not IsEmpty(Range("AL17").Value) And Range("AL17").Value = Range("AQ17").Value Then
Call MsgBox("Sie haben die gleiche Auswahl für Antragsteller 1 und für  _
Antragsteller 2 getroffen! Sind Sie sicher?", vbQuestion, "Warnung")
End If
End If
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Not Intersect(CellsoB, Target) Is Nothing Then
If CellsoB.Value = "nein" Then
UF_Erlass.Show
End If
End If
''''''xxxxxxxxxxxxxxx Das Blatt mit den Buchungsdaten einblenden, wenn Option gewählt:  _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Not Intersect(CellsBuch, Target) Is Nothing Then
Call ProtectMap_off
Sheets("Buchungsdaten").Visible = CellsBuch.Value  "nein"
Call ProtectMap_on
End If
Set CellsE = Nothing: Set CellsF = Nothing: Set CellsG = Nothing: Set SellGes = Nothing: Set  _
CellsIcon = Nothing: Set CellsAS = Nothing: Set CellsBuch = Nothing: Set CellsoB = Nothing
End Sub

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige