Laufzeitfehler im VBA Code - Warum? geschlossen 

Status
Für weitere Antworten geschlossen.

Messiah

Registered +
Registriert
Dez. 2007
Beiträge
31
Hallo Zusammen,

ich musste in meinen funktionierenden VBA-Code noch ein´weiteres Feld mit einbeziehen und nun meckert er immer rum. :rot:

Hier erstmal der Code:

Code:
Option Explicit

Private Sub WorkSheet_Change(ByVal Target As Range)

If Range("D43").Value = "Ja" Then
ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 15
Selection.Locked = False
Selection.FormulaHidden = False
Range("B44").Select
Selection.Interior.ColorIndex = 2
ActiveCell.FormulaR1C1 = "=RC[2]/R[-32]C"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 2
Selection.Locked = True
Selection.FormulaHidden = False
ActiveCell.FormulaR1C1 = "=RC[-2]*R[-32]C[-2]"
Range("B44").Select
[COLOR='Yellow']Selection.Interior.ColorIndex = 2[/COLOR]
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If

End Sub

Wenn im Feld D43 ein "Ja" geschrieben wird funktioniert alles wunderbar. Nur wenn da "Nein" eingetragen wird gibt er mit immer einen Fehler zurück und zwar: Laufzeitfehler '1004' - Die ColorIndex-Eigenschaft des Interior-Objektes kann nicht festgelegt werden.
Wenn ich dann den "Debugger" starte makiert er eine Zeile gelb wie auch hier in dem Code.

Kann mir da Jemand weiterhelfen?
Gruß, Messiah
 
Zuletzt bearbeitet von einem Moderator:
probier mal das, ich habe nur die zeilenreihenfolge verändert!

Code:
Option Explicit

Private Sub WorkSheet_Change(ByVal Target As Range)

If Range("D43").Value = "Ja" Then
ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 15
Selection.Locked = False
Selection.FormulaHidden = False
Range("B44").Select
Selection.Interior.ColorIndex = 2
ActiveCell.FormulaR1C1 = "=RC[2]/R[-32]C"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 2
Selection.Locked = True
Selection.FormulaHidden = False
Range("B44").Select
Selection.Interior.ColorIndex = 2
ActiveCell.FormulaR1C1 = "=RC[-2]*R[-32]C[-2]"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If

End Sub

Was bezweckst Du eigentlich damit?
 
Wenn ich das so mach wie du vorgeschlagen hast schreibt er mir die Formel in das falsche Feld...

Das Problem was ich mit dem Code ursprünglich beheben wollte findest du hier: http://www.freesoft-board.to/f306/p...nicht-das-was-er-soll-400319.html#post3790857

Ich hatte den code so:
Code:
Option Explicit

Private Sub WorkSheet_Change(ByVal Target As Range)

If Range("D43").Value <> "Nein" Then

ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 15
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Else

ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 2
Selection.Locked = True
Selection.FormulaHidden = False
ActiveCell.FormulaR1C1 = "=RC[-2]*R[-32]C[-2]"
Range("D44").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End If


End Sub

Der Code so alleine macht das was er soll nur jetzt soll noch ein weiteres Feld angesprochen werden.
Da hab ich jetzt den code (erster Eintrag) erstellt. Ich versteh nur nicht warum er ein Problem mit dem Else-Teil hat und beim If-Teil nicht.

Gruß,Messiah
 
Hallo Messiah,

also, aus meiner Sicht liegt der Fehler in der ELSE-Anweisung daran, dass Du mit der SELECTION.LOCKED=TRUE die Zelle sperrst, aber dann in die gleiche eine Formel/Berechnung einfügen willst - geht nicht gut.

Diese ganzen Locked/Protect-Anweisungen brauchst Du eigentlich doch nicht, oder? Habe sie in Deinem Beispiel mal auskommentiert. Bei mir läuft es damit sauber.

Viele Grüße

Heiko


Code:
Private Sub WorkSheet_Change(ByVal Target As Range)

If Range("D43").Value <> "Nein" Then

ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 15
[COLOR='SeaGreen']'Selection.Locked = False[/COLOR]
Selection.FormulaHidden = False
[COLOR='SeaGreen']'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, [/COLOR]Scenarios:=True

Else

ActiveSheet.Unprotect
Range("D44").Select
Selection.Interior.ColorIndex = 2
[COLOR='SeaGreen']'Selection.Locked = True[/COLOR]
Selection.FormulaHidden = False
ActiveCell.FormulaR1C1 = "=RC[-2]*R[-32]C[-2]"
Range("D44").Select
[COLOR='SeaGreen']'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True[/COLOR]

End If


End Sub
 
Ich hab jetzt die Zeilenreihenfolge etwas verändert und schon funktioniert es...:drum::tata:

Danke für deine Bemühung.

Messiah
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben Unten