Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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

Fehler beim Aufheben des globalen Blatts

Fehler beim Aufheben des globalen Blatts
19.02.2022 10:18:24
mike49
Hallo,
ich habe eine Mappe mit mehreren Blättern.
Zum gleichzeitigen Aufheben bzw Setzen des Blattschutzes will ich dieses Makro im Modul "Blattschutz" verwenden:
Option Explicit
Sub KeinSchutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
For intBlatt = 1 To Sheets.Count 'Schleife für alle Tabellenblätter:
If Sheets(intBlatt).ProtectContents = True Then Schutz_Aufheben intBlatt 'Wenn geschützt dann Schutz aufheben.
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub Sub Schutz_Aufheben(varBlatt As Variant)
Sheets(varBlatt).Unprotect
End Sub Sub Schutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
For intBlatt = 1 To Sheets.Count 'Schleife für alle Tabellenblätter:
If Sheets(intBlatt).ProtectContents = False Then Schutz_Herstellen intBlatt 'Wenn _
ungeschützt dann Schutz wieder herstellen.
Sheets(intBlatt).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets(intBlatt).EnableSelection = xlNoRestrictions
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub Sub Schutz_Herstellen(varBlatt As Variant)
Sheets(varBlatt).Protect
End Sub Wenn ich über Alt+F8 den globalen Schutz aller Blätter mit dem Modul "Blattschutz" aufheben will, kommt die Fehlermeldung:
Laufzeitfehler 1004:
Methode 'Intersect' für das Objekt '_Global' ist fehlgeschlagen.
Wenn ich dann unter "Diese Arbeitsmappe" nachschaue

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'ActiveSheet.Unprotect '--bei Zellwechsel wird Schutz aufgehoben
Dim r As Long
Dim c As Integer
If Not Intersect(Target, Range("B5:H35")) Is Nothing Then 'hier die Pruefung
ActiveSheet.Unprotect '--bei Zellwechsel wird Schutz aufgehoben
Range("B5:H35").Interior.ColorIndex = xlNone
r = Selection.Row
'  c = Selection.Column
Range(Cells(r, 2), Cells(r, 8)).Interior.ColorIndex = 35
'  Range(Cells(2, c), Cells(8, c)).Interior.ColorIndex = 35
ActiveSheet.Protect '--Schutz setzen wenn Zellwechsel innerhalb der Range
ActiveSheet.EnableSelection = xlUnlockedCells '--gesperrte Zellen werden nicht angewählt
End If
End Sub
ist die Zeile "If Not Intersect . . ." gelb unterlegt!
Läuft da was schief?
Gruß
mike49

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Aufheben des globalen Blatts
19.02.2022 10:23:15
onur
If Not Intersect(Target, Sh.Range("B5:H35")) Is Nothing Then
AW: Fehler beim Aufheben des globalen Blatts
19.02.2022 12:41:16
mike49
Hallo Onur,
danke für die schnelle Hilfe. Das klappt so.
Kann man den den globalen Schutz bzw. Aufhebung noch so abändern, dass die 2 Blätter "Jahr Eingabe" und "Feiertage davon ausgenommen werden?
Diese möchte ich bei Bedarf manuell ausführen!
LG
AW: Fehler beim Aufheben des globalen Blatts
19.02.2022 12:54:14
Gerd

Select Case Sh.Name
Case "Jahr Eingabe", "Feiertage"
'mach nix
Case Else
'mach was
End Select

AW: Fehler beim Aufheben des globalen Blatts
19.02.2022 13:31:18
mike49
Danke Gerd L für die Hilfe.
Sorry, aber da bin doch etwas überfordert.
An welcher Stelle und wo muss das rein?
Noch besser: Wie sieht der komplette Code aus?
Es wäre schön, wenn du mir dabei helfen könntest.
LG
mike49
Anzeige
Schade . . .
19.02.2022 16:38:02
mike49
. . . trotzdem Danke.
LG
mike49
AW: Schade . . .
19.02.2022 16:49:12
SF
Was genau ist denn jetzt schade?
AW: Schade . . .
19.02.2022 18:12:42
mike49
lies einfach meine letzte Antwort!
Ich finde es "Schade" dass Gerd L sich nicht mehr gemeldet hat. Aus welchem Grund auch immer.
AW: Schade . . .
19.02.2022 18:34:00
SF
Sorry, aber was hast du denn Bitte für einen Anspruch hier? Nach 3 Stunden, an einem Wochenende, meckerst du schon, und nichts anderes ist es, weil sich jemand nicht mehr gemeldet hat im kostenlos dein Problem zu lösen?
Wenn du permanenten adhoc Service haben möchtest, bezahl halt jemanden dafür, inkl Wochenende Zuschlag.
AW: Schade . . .
19.02.2022 18:52:28
mike49
ich weiß gar nicht warum du deinen "Senf" dazu gibst? Meine Antwort galt Gerd L.
Dein "Oberlehrergehabe" kannst du anderen ersparen! Außerdem sind deine Hilfen nicht gerade ergibig, wie ich aus anderen Threads entnommen habe!
Wie furchtbar muss es für dich sein, dass du auch am Wochenende im Forum als Experte Hilfestellung "geben musst".
Auf weitere Kommentare oder Hilfen von dir kann ich verzichten!
Anzeige
AW: Schade . . .
20.02.2022 08:41:57
Gerd
Hallo Mike,
wie sieht dein aktueller Code genau (u. vollständig) aus, in den der Ausschluß der beiden Blätter eingebaut werden soll?
Gruß Gerd
AW: Schade . . .
20.02.2022 13:43:52
mike49
Hallo Gerd L,
ich habe eine Mappe mit mehreren Blättern.
Zum gleichzeitigen Aufheben bzw Setzen des Blattschutzes will ich dieses nachfolgende Makro im Modul "Blattschutz" verwenden:
Option Explicit
Sub KeinSchutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
For intBlatt = 1 To Sheets.Count 'Schleife für alle Tabellenblätter:
If Sheets(intBlatt).ProtectContents = True Then Schutz_Aufheben intBlatt 'Wenn geschützt dann Schutz aufheben.
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub Sub Schutz_Aufheben(varBlatt As Variant)
Sheets(varBlatt).Unprotect
End Sub Sub Schutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
For intBlatt = 1 To Sheets.Count 'Schleife für alle Tabellenblätter:
If Sheets(intBlatt).ProtectContents = False Then Schutz_Herstellen intBlatt 'Wenn _
ungeschützt dann Schutz wieder herstellen.
Sheets(intBlatt).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets(intBlatt).EnableSelection = xlNoRestrictions
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub Sub Schutz_Herstellen(varBlatt As Variant)
Sheets(varBlatt).Protect
End Sub
Wenn ich über Alt+F8 den globalen Schutz aller Blätter mit dem Modul "Blattschutz" aufheben will, kommt die Fehlermeldung:
Laufzeitfehler 1004:
Methode 'Intersect' für das Objekt '_Global' ist fehlgeschlagen.
Wenn ich dann unter "Diese Arbeitsmappe" nachschaue

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'ActiveSheet.Unprotect '--bei Zellwechsel wird Schutz aufgehoben
Dim r As Long
Dim c As Integer
If Not Intersect(Target, Range("B5:H35")) Is Nothing Then 'hier die Pruefung
ActiveSheet.Unprotect '--bei Zellwechsel wird Schutz aufgehoben
Range("B5:H35").Interior.ColorIndex = xlNone
r = Selection.Row
'  c = Selection.Column
Range(Cells(r, 2), Cells(r, 8)).Interior.ColorIndex = 35
'  Range(Cells(2, c), Cells(8, c)).Interior.ColorIndex = 35
ActiveSheet.Protect '--Schutz setzen wenn Zellwechsel innerhalb der Range
ActiveSheet.EnableSelection = xlUnlockedCells '--gesperrte Zellen werden nicht angewählt
End If
End Sub
ist die Zeile "If Not Intersect . . ." gelb unterlegt!
Läuft da was schief?
Gruß
mike49
Anzeige
AW: Schade . . .
20.02.2022 13:55:14
ralf_b
vesuchs mal so
Not Intersect(Target, sh.Range("B5:H35"))
AW: Schade . . .
20.02.2022 14:16:40
mike49
Hallo ralf_b,
danke für die Hilfe!
Ja das hilft. Prima.
Jetzt nur noch:
Die beiden Blätter "Jahr Eingabe" und "Feiertage" sollen ja vom globalen "Schutz" bzw. "Kein Schutz" ausgenommen werden!
Was und an welcher Stelle des Codes muss eine Ergänzung erfolgen?
Gruß
mike49
AW: Schade . . .
20.02.2022 14:40:00
ralf_b
ja klar hätte ich eine Lösung. Wie wärs wenn du mir erst mal erklärst warum das sh vor dem Range den Unterschied ausmacht?
AW: Schade . . .
20.02.2022 15:20:59
mike49
Uups!
Diese Änderung hattest du doch vorgeschlagen!?

vesuchs mal so

Not Intersect(Target, sh.Range("B5:H35"))

Anzeige
ist nur ein Test...
20.02.2022 15:38:39
ralf_b
..um den Lernerfolg zu verifizieren. Wir arbeiten hier auch mit, um den Fragern VBA näherzubringen ,damit sie ihre Aufgaben selbsständig lösen können.
Geben und nehmen. Also, was bewirkt das "sh"?
AW: ist nur ein Test...
20.02.2022 15:45:21
mike49
.ich meine, dass mit "sh" sheet, also Blatt gemeint ist!? Aber welches Blatt?
Lassen wir's . . .
20.02.2022 16:06:36
mike49
. . . ich drehe mich im Kreis. Habe jetzt auch keine Lust mehr.
Trotzdem danke.
Gruß
mike49
AW: ist nur ein Test...
20.02.2022 16:16:12
ralf_b
Mike, ich wünsche mir insgeheim das die Fragenden sich mit den Lösungen auch auseinandersetzen und sie versuchen zu analysieren. Ansonsten verkommt so ein Forum wo sich Leute gegenseitig helfen, zu einem Ort wo man billig Lösungen abgreifen kann, indem man nur ein bisschen herumwinselt.
Für mich sieht deine Beispieldatei so aus als ob du die geerbt oder gefunden hast und keinen Plan hast was du da eigentlich tust.
Als erstes sollte man sich in Onlinehilfen informieren was man da eigentlich vor der Nase hat.
der Code befindet sich im Modul der Arbeitsmappe und wird ausgelöst wenn sich in einem Blatt eine Auswahl ändert. sh ist der Verweis(die Referenz) auf das auslösende Blatt. Ohne die Blattreferenz ist ein Range( einZellbezug ) nicht eindeutig.
Da du diesen Select Case Hinweis auch nicht umsetzen kannst, hast du viel zu wenig Basiswissen. Ich rate dir die Finger davon zu lassen.
gruß
rb
Anzeige
AW: ist nur ein Test...
20.02.2022 16:41:43
mike49
👍 Alles klar! Ich habe verstanden,
noch n klugscheißer `-/
20.02.2022 13:01:33
Oberschlumpf
Hey Mike,
wir wissen ja nun schon, dass du NOCH NICHT so viel Ahnung hast. (was nich schlimm is - wir alle ham ma klein angefangen!)
Aber wieso zeigst du nicht mal n bisschen mehr Einsatz - in dem du per Upload eine Bsp-Datei zeigst, in der man deine Probleme (besser als nur per Erklärungen!!!) erkennen kann?
Ciao
Thorsten
AW: noch n klugscheißer `-/
20.02.2022 13:51:19
mike49
Hi Thorsten,
danke für den freundlichen Hinweis. Ich schicke selbstverständlich eine Beispielmappe hoch, wenn dies gewünscht wird.
Ich habe mich nur über die Zurechtweisung von SF geärgert, zumal er selbst zur Lösung meines Problems nichts beigetragen hat.
Der Ton macht die Musik
Liebe Grüße
mike49
Anzeige
AW: noch n klugscheißer `-/
20.02.2022 13:58:47
Oberschlumpf
ähhh Mike
und WO is die Bsp-Datei?
Und die Hinweise von SF find ich gerechtfertigt - ja, ES IST Wochenende - und dir fällt nix Besseres ein, als mit "Mitleidshinweis" S C H A D E Druck auszuüben.
SF hat schon recht: Wenn wir dir zu langsam/zu selten antworten, dann beauftrage einen Auftragsprogrammierer.
Und wenn dir "mein Ton" nun auch nich (mehr) gefällt - dann is das eben so....oder aber...reflektier mal dein eigenes Verhalten - vielleicht haben wir ja gar nich sooo Unrecht...
Ciao
Thorsten
AW: noch n klugscheißer `-/
20.02.2022 14:32:49
mike49
Hallo Thorsten,
hier die der Größe wegen verkleinerte Mappe.
https://www.herber.de/bbs/user/151249.xlsm
Vielleicht hat auch ralf_b eine Lösung?
Gru0
mike49
Anzeige
AW: noch n klugscheißer `-/ +1
20.02.2022 14:20:36
Yal
Hallo Mike,
bei aller Höflichkeit, die ich mir selber verpflichte, finde ich wenig reflektiert, anzumerken, dass der "Ton die Musik machen" soll, wenn man selber mit einer vergrifenen Meinungsäußerung für den nicht passenden Ton gesorgt hat.
Du magst auch anmerken, dass es sich hier wieder um den Senf eines unbeteiligten handelt, aber es ist mal so: man bekommt unentgeltlich Hilfe und es ist guter Ton, sich darüber nicht zu beschweren.
Nachtragend sind wir natürlich nicht. Du bist jederzeit willkommen.
VG
Yal
AW: noch n klugscheißer `-/ +1
20.02.2022 15:15:12
mike49
Hallo Yal,
mit "Senf" meinte ich die Zurechtweisung von SF über den von mir verwendeten Ausdruck "Schade". Ich wollte damit nur zum Ausdruck bringen, dass die Korrespondenz abrupt aufhörte und auch nach 3 Stunden keine Rückmeldungich kam.
Diese barsche Zurechtweisung sehe ich nicht als "unentgeltliche Hilfe" an, zumal er ja selbst nichts zur Problemlösung beigetragen hat.
Gerd L hat für die Zurechtweisung einen "freundlicheren Ton" verwendet. Deshalb meine Kommentierung: Der Ton macht die Musik.
Ich denke mal, wir lassen's dabei!
FG
mike49
Anzeige
AW: Fehler beim Aufheben des globalen Blatts
20.02.2022 17:17:22
Gerd
Moin, is' nur zum Testen. :-)

'Modul DieseArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
For intBlatt = 1 To ThisWorkbook.Sheets.Count 'Schleife für alle Tabellenblätter:
With ThisWorkbook.Sheets(intBlatt)
Select Case .Name
Case "Jahr Eingabe", "Feiertage"  'mach nichts
Case Else
.Cells.Locked = True
.Range("B5:H35").Locked = False
'Schutz  herstellen.
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlUnlockedCells
End Select
End With
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Sh
Select Case .Name
Case "Jahr Eingabe", "Feiertage"  'mach nichts
Case Else
If Not Intersect(Target, Sh.Range("B5:H35")) Is Nothing Then 'hier die Pruefung
.Unprotect
Sh.Range("B5:H35").Interior.ColorIndex = xlNone
Intersect(Target.EntireRow, .Range("B:H")).Interior.ColorIndex = 35
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlUnlockedCells
End If
End Select
End With
End Sub

'Modul1
Option Explicit
Sub KeinSchutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
With ThisWorkbook
For intBlatt = 1 To .Sheets.Count 'Schleife für alle Tabellenblätter:
If .Sheets(intBlatt).ProtectContents = True Then
.Sheets(intBlatt).Unprotect 'Wenn geschützt dann Schutz aufheben.
End If
Next
End With
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub
Sub Schutz()
Dim intBlatt As Integer
Application.ScreenUpdating = False 'Bildschirmaktualisierung abschalten.
With ThisWorkbook
For intBlatt = 1 To .Sheets.Count 'Schleife für alle Tabellenblätter:
Select Case .Name
Case "Jahr Eingabe", "Feiertage"  'mach nichts
Case Else
With .Sheets(intBlatt)
If .ProtectContents = False Then  'Wenn ungeschützt dann Schutz wieder herstellen.
.Cells.Locked = True
.Range("B5:H35").Locked = False
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlUnlockedCells
End If
End With
End Select
Next
End With
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder einschalten.
End Sub
Gruß Gerd
Anzeige
AW: Fehler beim Aufheben des globalen Blatts
20.02.2022 18:09:43
mike49
Hallo Gerd,
danke für tolle Hilfe. Ich konnte es aber noch nicht testen, weil das noch in das Modul 'Diese Arbeitsmappe' als Anfang mit rein soll:
Option Explicit

Private Sub Workbook_Open()
With ThisWorkbook.Sheets(Format(Date, "MMM"))
.Activate
.Cells(Day(Date) + 4, 3).Select
End With
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige