787 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Forum,
ich verwende in mehreren VBA Prozeduren denselben, im Folgenden verkürzt dargestellten Code:
If Target.Offset(0) = "" Then
ActiveSheet.Unprotect Password:=[VLOOKUP(39, Variable!$B$1:$D$39, 2)]
Target.Offset(0, 18).Interior.ColorIndex = 35
Target.Offset(0, 18).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowSorting:=True, Password:=[VLOOKUP(39, Variable!$B$1:$D$39, 2)]
End If
Zur Vereinfachung möchte ich den Code in ein Modul als Subroutine >ÄndernZelleigenschaft< speichern und in den Prozeduren mit
Call ÄndernZelleigenschaft
aufrufen. Die Zelladressierung über
Target.Offset(0, 18)…usw.…
funktioniert hierbei nicht!

Wie muß ich die Zellen in der Subroutine adressieren?
Vorab schon mal Danke für die Hilfe.

2 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo hanswerne,

ändere in dem Makro das Wort "Target" gegen das Wort "ActiveCell". Dein Makro sähe dann wie folgt aus.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Sub ÄndernZelleigenschaft()
If ActiveCell.Offset(0) = "" Then
ActiveSheet.Unprotect Password:=[VLOOKUP(39, Variable!$B$1:$D$39, 2)]
ActiveCell.Offset(0, 18).Interior.ColorIndex = 35
ActiveCell.Offset(0, 18).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowSorting:=True, Password:=[VLOOKUP(39, Variable!$B$1:$D$39, 2)]
End If
End Sub

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von hans-werner Einsteiger_in (49 Punkte)
Hallo Oliver,
Deine Lösung funktioniert einwandfrei!
Nochmals Danke für die Hilfe.

Grusss
hans-werner
...