AW: Makro nacheinander bei bestimmten Tabellennamen
23.10.2013 14:42:13
Andi
Danke für die schnellen Antworten! Das geht ja fix hier :-)
Mit dem Makro befülle ich selbstgebaute Gannt-Diagramme (viel bedingte Formatierungen) und schreibe aktuelle Werte an die jeweils gültige Stelle.
Die Wiederholungen von Zeile 10 bis Zeile 66 hatte ich schon mal in ein Array umgeschrieben, damit´s schlanker wird. Leider dauerts dann auch viel-viel länger.
Makro sieht folgendermaßen aus.
Sub Starte_Prognose()
'Zeige Meldefenster
WaitPrognose.Show vbModeless
Application.Wait Now + TimeValue("00:00:01")
Application.ScreenUpdating = False
'lösche alte Meilensteine
Range(Cells(9, 1), Cells(9, 265)).ClearContents
'lösche alte Prognosewerte
For t = 66 To 10 Step -4
If Cells(t, 1).Value > "" Then
For zeile = t To t Step 4
Range(Cells(zeile, 6), Cells(zeile, 265)).ClearContents
Next zeile
End If
Next t
Application.ScreenUpdating = True
Application.ScreenUpdating = False
' neue Meilensteine eintragen
For Each zelle In Range("F8:JE9")
If zelle.Value = Range("Jo6").Value Then
zelle.Offset(1, 0) = Range("JN6").Value
End If
If zelle.Value = Range("JQ6").Value Then
zelle.Offset(1, 0) = Range("JP6").Value
End If
If zelle.Value = Range("JS6").Value Then
zelle.Offset(1, 0) = Range("JR6").Value
End If
If zelle.Value = Range("JU6").Value Then
zelle.Offset(1, 0) = Range("JT6").Value
Exit For
End If
Next
' Z E I L E N W E R T E
' ############################################ Zeile 10 ##
For Each zelle In Range("F8:JE10")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(2, 0) = Range("JN10").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(2, 0) = Range("JP10").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(2, 0) = Range("JR10").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(2, 0) = Range("JT10").Value
Exit For
End If
Next
' ############################################ Zeile 14 ##
For Each zelle In Range("F8:JE14")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(6, 0) = Range("JN14").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(6, 0) = Range("JP14").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(6, 0) = Range("JR14").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(6, 0) = Range("JT14").Value
Exit For
End If
Next
' ############################################ Zeile 18 ##
For Each zelle In Range("F8:JE18")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(10, 0) = Range("JN18").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(10, 0) = Range("JP18").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(10, 0) = Range("JR18").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(10, 0) = Range("JT18").Value
Exit For
End If
Next
' ############################################ Zeile 22 ##
For Each zelle In Range("F8:JE22")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(14, 0) = Range("JN22").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(14, 0) = Range("JP22").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(14, 0) = Range("JR22").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(14, 0) = Range("JT22").Value
Exit For
End If
Next
' ############################################ Zeile 26 ##
For Each zelle In Range("F8:JE26")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(18, 0) = Range("JN26").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(18, 0) = Range("JP26").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(18, 0) = Range("JR26").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(18, 0) = Range("JT26").Value
Exit For
End If
Next
' ############################################ Zeile 30 ##
For Each zelle In Range("F8:JE30")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(22, 0) = Range("JN30").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(22, 0) = Range("JP30").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(22, 0) = Range("JR30").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(22, 0) = Range("JT30").Value
Exit For
End If
Next
' ############################################ Zeile 34 ##
For Each zelle In Range("F8:JE34")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(26, 0) = Range("JN34").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(26, 0) = Range("JP34").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(26, 0) = Range("JR34").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(26, 0) = Range("JT34").Value
Exit For
End If
Next
' ############################################ Zeile 38 ##
For Each zelle In Range("F8:JE38")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(30, 0) = Range("JN38").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(30, 0) = Range("JP38").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(30, 0) = Range("JR38").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(30, 0) = Range("JT38").Value
Exit For
End If
Next
' ############################################ Zeile 42 ##
For Each zelle In Range("F8:JE42")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(34, 0) = Range("JN42").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(34, 0) = Range("JP42").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(34, 0) = Range("JR42").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(34, 0) = Range("JT42").Value
Exit For
End If
Next
' ############################################ Zeile 46 ##
For Each zelle In Range("F8:JE46")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(38, 0) = Range("JN46").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(38, 0) = Range("JP46").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(38, 0) = Range("JR46").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(38, 0) = Range("JT46").Value
Exit For
End If
Next
' ############################################ Zeile 50 ##
For Each zelle In Range("F8:JE50")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(42, 0) = Range("JN50").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(42, 0) = Range("JP50").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(42, 0) = Range("JR50").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(42, 0) = Range("JT50").Value
Exit For
End If
Next
' ############################################ Zeile 54 ##
For Each zelle In Range("F8:JE54")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(46, 0) = Range("JN54").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(46, 0) = Range("JP54").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(46, 0) = Range("JR54").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(46, 0) = Range("JT54").Value
Exit For
End If
Next
' ############################################ Zeile 58 ##
For Each zelle In Range("F8:JE58")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(50, 0) = Range("JN58").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(50, 0) = Range("JP58").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(50, 0) = Range("JR58").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(50, 0) = Range("JT58").Value
Exit For
End If
Next
' ############################################ Zeile 62 ##
For Each zelle In Range("F8:JE62")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(54, 0) = Range("JN62").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(54, 0) = Range("JP62").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(54, 0) = Range("JR62").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(54, 0) = Range("JT62").Value
Exit For
End If
Next
' ############################################ Zeile 66 ##
For Each zelle In Range("F8:JE66")
'...und überprüfen, ob da der Wert aus Step drinsteht
If zelle.Value = Range("JO6").Value Then '# Step1
zelle.Offset(58, 0) = Range("JN66").Value
End If
If zelle.Value = Range("JQ6").Value Then '# Step2
zelle.Offset(58, 0) = Range("JP66").Value
End If
If zelle.Value = Range("JS6").Value Then '# Step3
zelle.Offset(58, 0) = Range("JR66").Value
End If
If zelle.Value = Range("JU6").Value Then '# Step4
zelle.Offset(58, 0) = Range("JT66").Value
Exit For
End If
Next
Application.ScreenUpdating = True
Unload WaitPrognose
End Sub
Die erste Lösung von Klaus funzt leider nicht. Da wurde das erste Tabellenblatt zerstört, weil der Code direkt hier angwendet wurde (Name des 1.Bl.: "Master").
Die zweite Lösung erschließt sich mir noch nicht...?