Hallo zusammen,
ich stehe vor einem Problem. Ich habe in meine Excel Mappe ein Makro eingebaut, welches immer die gesamte ausgewählte Zeile gelb markiert.
Nachfolgend habe ich einen Blattschutz über VBA eingesetzt.
Auf den einzelnen Blättern funktioniert das auch einwandfrei. Wenn ich allerdings das Tabellenblatt via eines Links wechsle, spuckt er mir folgende Fehlermeldung aus:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler.
Wenn ich auf debuggen klicke, sagt er mir, dass im Code für den eingefärbten Balken etwas nicht stimme (bei If Not...)
Kann mir jemand helfen?
LG Lea
Mein Code:
Private Sub Workbook_SheetSelectionChange( _
ByVal sh As Object, ByVal Target As Excel.Range)
ActiveSheet.Unprotect
Static AlteZelle As Range
If Not AlteZelle Is Nothing Then
AlteZelle.EntireRow.Interior.ColorIndex = _
xlColorIndexNone
End If
Target.EntireRow.Interior.ColorIndex = 6
Set AlteZelle = Target
ActiveSheet.Protect
End Sub
Hallo,
das Phänomen ist für mich nicht reproduzierbar. Somit:
Was ist denn das für ein Link?
Funktioniert der Link, wird der Sprung ausgeführt?
Handelt es sich um einen Sprung in eine andere Exceldatei??
vg, MM
Hallo,
ich erkläre mal nochmal.
Entschuldigt bitte, meine Excel Skills sind noch nicht so ausgereift.
Also:
Ich habe eine Excel Datei erstellt mit mehreren Blättern. Diese Blätter sind miteinander über Links verknüpft (Sprich: ich klicke auf einen Link und lande auf einem anderen Excel Blatt). Die funktionieren auch.
Des weiteren gibt es auf allen Blättern das Makro, das immer die gesamte Zeile farbig markiert, wenn diese mit dem Cursor oder per Klick ausgewählt wurde. Den Code hierfür habe ich im VBA hinterlegt und entspricht folgendem:
Code:
Private Sub Workbook_SheetSelectionChange( _
ByVal sh As Object, ByVal Target As Excel.Range)
Static AlteZelle As Range
If Not AlteZelle Is Nothing Then
AlteZelle.EntireRow.Interior.ColorIndex = _
xlColorIndexNone
End If
Target.EntireRow.Interior.ColorIndex = 6
Set AlteZelle = Target
End Sub
Nun möchte ich alle Blätter noch schützen.
Folgender Code sollte den Blattschutz einbauen und das Makro trotzdem arbeiten lassen
Code:
Private Sub Workbook_SheetSelectionChange( _
ByVal sh As Object, ByVal Target As Excel.Range)
ActiveSheet.Unprotect
Static AlteZelle As Range
If Not AlteZelle Is Nothing Then
If Not AlteZelle.Parent Is sh Then
AlteZelle.Parent.Unprotect
AlteZelle.EntireRow.Interior.ColorIndex = _
xlColorIndexNone
AlteZelle.Parent.Protect
Else
AlteZelle.EntireRow.Interior.ColorIndex = _
xlColorIndexNone
End If
End If
Target.EntireRow.Interior.ColorIndex = 6
Set AlteZelle = Target
ActiveSheet.Protect
End Sub
Allerdings spuckt er mir dann die Fehlermeldung
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler.
aus, soblad ich das Blatt wechsle. Wenn ich die Fehlermeldung beende, funktioniert das Makro wieder einwandfrei.
Eine ständige Fehlermeldung ist auf Dauer sehr nervig.
Kannst du jetzt vielleicht helfen?
LG
Ich hab nochmal ein wenig rumgespielt und tatsächlich tritt der Fehler auch bei mir auf wenn ich mit einem Link innerhalb der Arbeitsmappe springe. Allerdings nur sporadisch. In den Fällen in den der Fehler auftrat, zeigte Sh noch auf das alte Blatt (mit dem Link), nicht auf das Sprungziel (wie es sein soll).
Probier mal folgendes :
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Static AlteZelle As Range
If Not AlteZelle Is Nothing Then
AlteZelle.Worksheet.Unprotect
AlteZelle.EntireRow.Interior.ColorIndex = xlColorIndexNone
AlteZelle.Worksheet.Protect
End If
ActiveSheet.Unprotect
Set Target = ActiveSheet.Range(Target.Address)
Target.EntireRow.Interior.ColorIndex = 6
Set AlteZelle = Target
ActiveSheet.Protect
End Sub
Heyyy!
Ich danke dir vielmals.
Jetzt funktioniert es. Was hast du geändert?
Zwei Dinge
Zum einen Blattschutz aufheben beim Löschen der alten Markierung
Zum anderen ein Workaround um ein Problem, dass ich selbst nicht so ganz verstehe .... :19: es wird sichergestellt, dass die Einfärbung auf dem Zielarbeitsblatt stattfindet.
vg, MM