Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Blattschutz trotz Makro - Fehler im Code
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an mmat für diesen Beitrag:
  • Lea
Antworten Top
#5
Heyyy!

Ich danke dir vielmals.
Jetzt funktioniert es. Was hast du geändert?
Antworten Top
#6
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste