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

Markierungsaufhebung

Markierungsaufhebung
12.02.2022 10:06:10
mike49
Hallo Leute,
ich habe eine Mappe mit 12 Monatsblättern (Jan-Dez). In jedem Blatt steht dieses Makro, das den festgelegten Zeilenbereich bei Aktivieren einer Zelle farbllch hervorhebt. Das funktioniert auch.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'UpdatebyExtendoffice6/1/2016
Dim rng1 As Range
'Dim rng2 As Range
ActiveSheet.Unprotect
Application.ScreenUpdating = False
With Target
.Worksheet.Cells.Interior.ColorIndex = 0
Set rng1 = Intersect(Range("A5:H35"), Target.EntireRow)
If Not rng1 Is Nothing Then rng1.Interior.Color = RGB(204, 255, 204)
' Set rng2 = Intersect(Range("C5:M35"), Target.EntireColumn)
' If Not rng2 Is Nothing Then rng2.Interior.Color = RGB(255, 255, 197)
End With
Application.ScreenUpdating = True
Set rng1 = Nothing
' Set rng2 = Nothing
ActiveSheet.Protect
End Sub
Leider bleiben beim Wechsel des Tabellenblattes die Markierungen bei den anderen Blättern bestehen. Das sollte so nicht sein.
Ich möchte, dass nur im aktiven Blatt die Markierung angezeigt wird und beim Wechseln des Tabellenblatts wieder aufgehoben wird.
Es sollen also im Prinzip alle erfolgten Markierungen in den anderen Blättern aufgehoben werden und nur die im aktiven Blatt angezeigt werden!
Wäre das machbar? Für eine Hilfe wäre ich dankbar.
Gruß
mike49

33
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierungsaufhebung
12.02.2022 10:21:24
Oberschlumpf
Hi mike49
zeig mal per Upload eine Bsp-Datei mit allem was erforderlich ist.
Ciao
Thorsten
AW: Markierungsaufhebung
12.02.2022 10:35:22
mike49
Hallo Thorsten,
leider ist meine Mappe größer als 300 KB, um sie hochzuladen. Wenn ich Blätter daraus lösche, kannst du das Problem beim Blattwechsel nicht nachvollziehen.
AW: Markierungsaufhebung
12.02.2022 10:48:16
Oberschlumpf
Hä?
Hi,
da dein Code doch - in jedem - Blatt steht, is es doch egal, wieviel Blätter enthalten, bzw - nicht - enthalten sind.
Aber ok, du verstehst das sicher besser als ich.
Und vllt hast du ja schon eine Lösung zu deiner Frage.
Bin auf deine Antwort beim anderen "Anbieter" neugierig.
Ciao
Thorsten
Anzeige
AW: Markierungsaufhebung
12.02.2022 11:39:15
Oberschlumpf
ähh?
Wenn schon im Open-Ereignis der Datei mit diesem Code

With ThisWorkbook.Sheets(Format(Date, "MMM"))
auf DAS Tabellenblatt mit dem Monat des heutigen Datums, dann solltest du in der Bsp-Datei vielleicht auch das Tabellenblatt MIT DEM AKTUELLEN MONAT zur Verfügung stellen.
Aber sei es drum.
Du hast noch gar nich auf Harys Vorschlag geantwortet.
Vielleicht ist DAS ja schon die Lösung für dich.
Ich warte mit weiteren Tests von mir - denn wenn Hary's Idee passt, muss ich ja nich mehr testen ;-)
Ciao
Thorsten
Anzeige
AW: Markierungsaufhebung
12.02.2022 12:42:10
mike49
Hallo Thorsten,
danke für die schnelle Antwort.
An welcher Stelle des Codes im Tabellenblatt wird die Zeile eingefügt?
AW: Markierungsaufhebung
12.02.2022 12:54:02
Oberschlumpf
Hi
diese Zeile..

With ThisWorkbook.Sheets(Format(Date, "MMM"))...
...ist schon in deinem Code enthalten!
Ciao
AW: Markierungsaufhebung
12.02.2022 11:49:35
Oberschlumpf
hi Mike49,
aber ein anderer Tipp:
Speicher deine Dateien besser im XLSM-Format als nur im XLS-Format, weil, schau mal...
Userbild
Deine XLS-Datei ist mit den wenigen Blättern (und Code und Formeln usw) tatsächlich noch sehr groß mit 239kb.
Aber die gleiche Datei, im XLSM-Format ist nur 78kb groß!
DAS is doch n Unterschied, oder? :-)
Da passen dann auch n paar mehr Tabellenblätter rein.
Denn mir is aufgefallen - bei nur einem Monatsblatt - wie soll man da zwischen den Monaten wechseln können?
Oder..hmm?..ich nutz "nur" Office 2016 - lassen sich in 2022 Dateien nur noch im XLS-Format speichern?
Ciao
Thorsten
Anzeige
AW: Markierungsaufhebung
12.02.2022 10:35:52
hary
Moin
Nutz dazu.

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sh.Cells.Interior.ColorIndex = 0
End Sub
Der Code gehoert in den Code "DieseArbeitsmappe". Wirkt bei allen Blaettern.
Den anderen kannst du auch in "Diese Arbeitsmappe" bringen. 1x schreiben und wirkt bei allen Blaettern.
gruss hary
AW: Markierungsaufhebung
12.02.2022 12:45:48
mike49
Uups!
Hallo hary,
ich hatte dir schon geantwortet, dass deine Lösung nicht funktioniert! Es kommt ein Laufzeitfehler. Auch wenn ich den Code stattdessen in das Blatt einfüge!.
Aber anscheinend wurde es nicht gesendet!
Gruß
mike49
Anzeige
AW:Fehler = Blattschutz?
12.02.2022 12:54:19
hary
Moin
Auf bleuen Dunst. ;-))
Das Blatt ist noch gescchuetzt.
Du musst schon im Code den Blattschutz deaktivieren.
Oder mit UserInterFaceOnly arbeiten.
gruss hary
AW: AW:Fehler = Blattschutz?
12.02.2022 17:48:42
mike49
Hallo hary,
im Prinzip läuft es jetzt!
In "Diese Arbeitsmappe" steht jetzt:

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

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
ActiveSheet.Unprotect
Sh.Range("A5:H35").Interior.ColorIndex = 0
End Sub
Beim Öffnen der Mappe wird jetzt zwar das aktuelle Monatsblatt und die Zelle mit dem aktuellen Tag angezeigt, aber diese ist nicht aktiviert und keine Markierung ist erfolgt. Beim Mausklick darauf erfolgt auch keine Markierung! Erst wenn ich in eine andere Zelle klicke erfolgt die Markierung!
Nach dem Löschen der Markierungen in den anderen Blättern beim Blattwechsel über obige Makro, sollte im Prinzip immer die aktuelle Tageszelle im aktuellen Monat aktiviert werden und somit auch die Markierung erfolgen!
Kann man das noch irgendwie ändern?
LG
mike49
Anzeige
Lassen wir's gut sein . . .
12.02.2022 19:00:16
mike49
. . . es taucht immer ein neues Problem auf! 🤔
Es ist mir zu aufreibend! 😒
Ich danke euch beiden für eure Hilfe! 👏
LG
mike49
AW: Lassen wir's gut sein . . .
13.02.2022 12:01:13
mike49
Hallo hary,
danke, dass du dich der Sache nochmals angenommen hast.
Ich habe jetzt folgendes gemacht:
1. Ich habe eine Kopie meiner Mappe gemacht und sie in" Muster.xlsm" umbenannt
2. Dann habe ich den Blattschutz über Alt+F8 (Kein Schutz) aufgehoben
3. Der Größe wegen habe ich die Blätter Apr-Dez gelöscht
4. Jetzt habe ich deinen Code in "Diese Arbeitsmappe" abgespeichert
5. Nach dem Öffnen der Mappe wird das aktuelle Monatsblatt geöffnet und die Datumszelle (C17) markiert. Ebenso erfolgt richtig die Markierung (heute nur nicht zu sehen)
6. Jetzt habe ich weitere Markierungen im aktuellen sowie in den Blättern Jan und Mrz gemacht
7. Nach dem Speichern und Schließen der Mappe und anschließenden erneuten Öffnen der Mappe, bleiben die manuell gemachten Markierungen erhalten
Das sollte so nicht sein! Es soll immer nur die tagesaktuelle Markierung erfolgen und die bisherigen gelöscht werden!
Man sollte jetzt in das Markierungs-Makro nur noch einbauen, dass die farbige Markierung des "Fadenkreuzes" nicht mit ausgedruckt wird"
Ich lade mal zum besseren Nachvollziehen die Mustermappe hoch
https://www.herber.de/bbs/user/151096.xlsm
Gruß
mike49
Anzeige
AW: Lassen wir's gut sein . . .
13.02.2022 13:08:48
mike49
Danke. Ich probiere gerade.
Beim Öffnen kommt die Meldung:
Fehler beim Kompilieren
Next ohne For
AW: Lassen wir's gut sein . . .
13.02.2022 13:36:24
hary
Moin
Mein Fluechtigkeitsfehler. Es fehlt End Select
muss so aussehen:

For Each wks In Worksheets
Select Case wks.Name
Case "Jahr Eingabe", "Feiertage" '--Ausnahmen
Case Else
wks.Cells.Interior.ColorIndex = 0
End Select '--das fehlt
Next
gruss hary
AW: Lassen wir's gut sein . . .
14.02.2022 13:28:04
mike49
Sorry hary, dass ich mich jetzt erst melde. Ich musste kurzfristig außer Haus und bin erst jetzt wieder zurück.
Ich habe das Makro mal getestet und es funktioniert. Leider weren aber auch alle anderen Farbmarkierungen entfernt!
Ich habe es mal so abgeändert und es funktioniert aber nur wenn die Blätter keinen Blattschutz haben.
Lieber wäre mir aber, wenn der Blattschutz bei allen Blättern erst vor dem Ausführen aufgehoben und danach wieder eingeschaltet wird.
Leider wird dei Farbmarkierung auch mit ausgedruckt. Das sollte so nicht sein. Hast du evtl. eine "Before print" Idee.
Option Explicit

Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In Worksheets
Select Case wks.Name
Case "Jahr Eingabe", "Feiertage" '--Ausnahmen
Case Else
wks.Range("A5:H35").Interior.ColorIndex = 0
End Select
Next
With ThisWorkbook.Sheets(Format(Date, "MMM"))
.Activate
With .Cells(Day(Date) + 4, 3)
.Select
.Offset(0, 0).Resize(1, 8).Interior.Color = RGB(204, 255, 204) '--Farbe A bis H
End With
End With
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sh.Range("A5:H35").Interior.ColorIndex = 0
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng1 As Range, rng2 As Range
Application.ScreenUpdating = False
With Target
'           Sh.Cells.Interior.ColorIndex = 0
Set rng1 = Intersect(Range("A5:H35"), Target.EntireRow)
If Not rng1 Is Nothing Then rng1.Interior.Color = RGB(204, 255, 204)
' Set rng2 = Intersect(Range("C5:M35"), Target.EntireColumn)
' If Not rng2 Is Nothing Then rng2.Interior.Color = RGB(255, 255, 197)
End With
Application.ScreenUpdating = True
Set rng1 = Nothing
' Set rng2 = Nothing
End Sub
LG
mike49
Anzeige
AW:Code ausfuehren trotz Schutz. . .
15.02.2022 10:05:55
hary
Moin
So braucht der Schutz nicht entfernt werden. Codes/Makros werden trotz Schutz ausgefuehrt.

Select Case wks.Name
Case "Jahr Eingabe", "Feiertage" '--Ausnahmen
Case Else
wks.Protect Password:="Kennwort", userinterfaceonly:=True  '--Kennwort anpassen
wks.Cells.Interior.ColorIndex = 0
End Select 
Zum Ausdruck teste mal. Code in den Code "DieseArbeitsmappe"

Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.Cells.Interior.ColorIndex = 0
End Sub
gruss hary
AW: AW:Code ausfuehren trotz Schutz. . .
15.02.2022 12:55:51
mike49
Prima.Das klappt mit dem Drucken des aktivierten Blättern! Die Markierung wird nicht mitgedruckt! 👍
Jetzt sollte nur noch eine Markierung möglich sein.
Ich meine damit:
Wenn die Mappe geöffnet wird, ist das Blatt "Feb" aktiviert und das heutige Datum sowie die Zeile markiert. Das ist o.k. so.
Wenn ich im Blatt Zeiten nachtragen muss und zu einem zurückliegenden Datum wechsle, wird diese Zeile auch richtig markiert.
Allerdings bleibt auch die Markierung der aktuellen Tageszeile erhalten!
Ich hätte aber lieber, dass beim Tageswechsel nur diese Zeile markiert wird und die Markierung der aktuellen Tageszeile aufgehoben wird.
Im Prinzip soll also nur die angeklickte Zeile in einem gewählten Blatt bzw. die aktuelle Tageszeile beim aktuellen Monat farblich markiert sein.
Kannst du das noch ändern?
Gruß
mike49
Anzeige
Nachtrag
15.02.2022 13:00:30
mike49
beim Aufheben des Blattschutzes soll kein Kennwort abgefragt werden! Die Aufhebung soll ganz normal möglich sein!
AW: AW:Code ausfuehren trotz Schutz. . .
15.02.2022 13:09:15
hary
Moin
Also
Ich oeffne die Mappe
Blatt Feb wird Zeile 19 (Heute) gefaerbt.
Jetzt klicke ich auf den 9.Feb.
Zeile wird gefaerbt
Zeile19 ist nicht gefaerbt.
so soll es doch sein oder? versteh ich nicht ganz.
https://www.herber.de/bbs/user/151142.xlsm
gruss hary
AW: AW:Code ausfuehren trotz Schutz. . .
15.02.2022 14:20:08
mike49
Hi,
nimm mal diese um einige Blätter verkleinerte Mappe. Es ist die aktuelle Mappe als Kopie.
Beim Öffnen wird bei mir richtig auch die zeile 19 im Blatt Feb gefärbt. Klicke ich jetzt auf den 9. Feb wird diese auch gefärbt.
Bei mir bleibt allerdings die Zeile 19 gefärbt . Klicke ich auf den 10. Feb wird auch diese gefärbt. Somit sin bei mir all 3 Tage gefärbt. Habe ich was falsch gemacht?
Übrigens möchte ich zum Aufheben des Blattschutzes kein Kennwort verwenden. Kann man das im Code noch ändern?
https://www.herber.de/bbs/user/151145.xlsm
LG
Anzeige
AW:Code ausfuehren trotz Schutz.
16.02.2022 08:44:43
hary
Moin
Zum 1.
Schau dir mal deinen Code an.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng1 As Range, rng2 As Range
Application.ScreenUpdating = False
With Target
'           Sh.Cells.Interior.ColorIndex = 0
Siehst du es? Du hast "Sh.Cells.Interior.ColorIndex = 0" auskommentiert mit dem Hochkomma. Also wird die Codezeile nicht ausgefuehrt.
Zum 2.

Select Case wks.Name
Case "Jahr Eingabe", "Feiertage", "!" '--Ausnahmen
Case Else
wks.Protect userinterfaceonly:=True  '--ohne Kennwort
wks.Range("A5:H35").Interior.ColorIndex = 0
End Select
Du musst den Schutz aller Blaetter durch Kennwort entfernen und dann normal schuetzen ohne Passwort. Mappe Speichern und oeffnen.
Tip: Benenn die Blaetter(ausgeblendete) vernuenftig. Nur ein Sonderzeichen oder Blattnamen mit Sonderzeichen koennen zum Problem werden.
gruss hary
AW: AW:Code ausfuehren trotz Schutz.
16.02.2022 18:47:01
mike49
Hallo hary,
danke vielmals für deine Mühe. Ich habe es jetzt so gemacht und es funktioniert so wie ich es wollte.
Beim Druckanstoß werden Markierungen gelöscht. Ebenfalls kann ich über Alt+F8 das Makro "Markierung_aufheben" anstoßen und die Markierung wird unabhänig vom Druck gelöscht.
Desweiteren kann ich über Alt+F8 alle Blätter auf einmal schützen (Schutz) oder den Schutz aufheben (Kein Schutz).
Der einzige Wermutstropfen:
Wenn ich im geschützen Blatt innerhalb des Markierungsbereichs Zellen anklicke, erfolgt richtigerweise die Markierung und das jeweilige Blatt behält den Blattschutz.
Klicke ich aber außerhalb des Markierungsbereiches eine Zelle an, wird der Blattschutz aufgehoben. Das soll aber so nicht sein!
Es soll im Prinzip bei Anklicken einer durch den Blattschutz gesperrten Zelle sich der Blattschutz nicht aufheben und diese Zelle demnach weiterhin nicht anwählbar sein!
Den Blattschutz des einzelnen Blattes oder aller Blätter auf einmal möchte ich manuell machen können.
Schau dir mal die Mustermappe an. Vielleicht kann man das ja noch ergänzen?
https://www.herber.de/bbs/user/151178.xlsm
LG
mike49
AW: AW:Code ausfuehren trotz Schutz.
17.02.2022 07:38:31
hary
Moin
Naja, du kannst Codes auch im Einzelschritt(F8 Taste) durchgehen. Oder beim lesen des Codes waere auch was aufgefallen .;-) Code wird immer von oben nach unten ausgefuehrt.

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
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
End If
End Sub
Also hebt dein Code beim Zellwechsel(egal wo) den Schutz auf. Schuetzt aber nur wenn Zellwechsel ( If Not Intersect..) in der Range liegt. Frage: Wo muss unprotect hin?
Da kommst du jetzt von allein drauf.
gruss hary
AW: AW:Code ausfuehren trotz Schutz.
17.02.2022 10:47:12
mike49
Moin hary,
danke für die Hilfe!
Aber irgenwie stehe ich auf der "Leitung".
Ich weiß ehrlich nicht, an welche Stelle ich die Zeile "ActiveSheet.Unprotect" hinverschieben soll?
LG
Hab's hingekriegt . . .
17.02.2022 10:55:30
mike49
. . . danke nochmals für deine tolle Hilfe und deine Geduld mit mir 👏
Liebe Grüße
mike49
Nachfrage . . .
17.02.2022 11:05:44
mike49
Sorry, dass ich noch was nachfrage.
Wenn das Blatt geschützt ist, sollen gesperrte Zellen nicht angewählt werden können!
Was muss man da ergänzen?
AW: Nachfrage . . .
17.02.2022 11:23:01
hary
Moin
Haettest du auch in Archiv gefunden.

ActiveSheet.Protect
ActiveSheet.EnableSelection = xlUnlockedCells
gruss hary
AW: Nachfrage . . .
17.02.2022 11:59:22
mike49
So ist es für mich perfekt und danke für den Tipp!
Danke nochmals!
Es tritt noch ein Fehler auf . . .
18.02.2022 14:06:13
mike49
Hy hary,
sorry, es tritt noch ein Fehler auf!
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 nachschaue in

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige