Worksheet_Change zwei mal?
03.07.2019 12:31:32
Leon.DerProf
ich habe einen Code im Tabellenblatt-Modul.
Dieser soll immer aktiv sein.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("Tabelle2[Vorbedingung]")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
'Hierher kommt der Code.
Call FarbeZeit
'Ggf. Hier: Call FarbeZeit2?
End If
End Sub
Bei FarbeZeit wird im Grunde folgendes passieren: Wenn eine Zelle in Spalte "Vorbedingung" irgendwas als Wert oder Wort hat, dann färbt sich ein Balken rot.
Ich bin mir nicht sicher, ob es notwendig ist den FarbeZeit Code einzufügen, ich möchte den Beitrag möglichst kurz halten, aber falls ihr den Code braucht, poste ich ihn ganz unten.
Nun möchte ich quasi den selben Worksheet_Change Makro für eine zweite Tabelle auf die selbe Art und Weise anwenden. Hierfür habe ich einen Code mit FarbeZeit2 geschrieben.
Zusatz
____________________________________________________
Code FarbeZeit:
Sub FarbeZeit()
Dim x As Integer
Dim festNr As Long
On Error GoTo Vorbei
x = -1
Do
x = x + 1
If Range("Tabelle2[Vorbedingung]").Range("A1").Offset(x, 0) = "" Then
festNr = Range("Tabelle2[Nr.]").Range("A1").Offset(x, 0).Value
Worksheets(2).Shapes("Zeit " & festNr).ShapeStyle = msoShapeStylePreset23
Else
festNr = Range("Tabelle2[Nr.]").Range("A1").Offset(x, 0).Value
With Tabelle1.Shapes("Zeit " & festNr).Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent2
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0.8000000119
.Transparency = 0
.Solid
End With
End If
Loop Until x > 300
Vorbei:
End Sub
Mit FarbeZeit allein klappt alles perfekt.Mit FarbeZeit2 hinzu.
Sub FarbeZeit2()
Dim y As Integer
Dim festNr2 As Long
Dim festNr3 As Long
On Error GoTo Vorbei2
y = -1
Do
y = y + 1
If Range("Tabelle3[Vorbedingung]").Range("A1").Offset(y, 0) = "" Then
festNr3 = Range("Tabelle3[Nr.]").Range("A1").Offset(y, 0).Value
festNr2 = Range("Tabelle3[B]").Range("A1").Offset(y, 0).Value
Worksheets(2).Shapes("ZeitTeil " & festNr2 & " | Nr. " & festNr3).ShapeStyle = _
msoShapeStylePreset21
Else
festNr3 = Range("Tabelle3[Nr.]").Range("A1").Offset(y, 0).Value
With Tabelle1.Shapes("ZeitTeil " & festNr2 & " | Nr. " & festNr3).Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent2
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0.8000000119
.Transparency = 0
.Solid
End With
End If
Loop Until y > 300
Vorbei2:
End Sub
Eigentlich müsste es ja so gehen, tut es aber leider nicht.
Beste Grüße
Leon