ich brauche mal wieder Eure Hilfe und zwar bei folgendem Problem: ich habe mir in Excel ein Tool gebastelt, mir dessen Hilfe ich einen Projektplan erstellen kann. Am Anfang einer Zeile steht dann das jeweilige Arbeitspaket, dann kommt das Start und das Enddatum. Aus diesen Daten wird dann ein Projektplan mit Balken gezeichnet. Soweit mal die Beschreibung.
Nun das Problem: An manchen Enddaten ist ein Meilenstein erreicht. Um das grafisch zu verdeutlichen habe ich ein Makro geschrieben, mit dem ich an die entsprechende Stelle im Plan (in der Regel am Ende eines Balkens) eine Raute zeichne. Ich klicke dazu auf die Zelle, die den Mittelpunkt der Raute darstellen soll und zeichne dann durch Drücken eines Knopfes und Ausführung des Makros meine Raute. Der Code sieht folgendermaßen aus:
Sub Meilenstein_erstellen()
Dim objShape As Shape, Zelle As Range
Dim ZelleZiel As Range
ActiveSheet.Unprotect
ActiveSheet.Shapes("AutoShape 43").Select
With Selection
.PrintObject = True
End With
Set Zelle = ActiveCell
Set objShape = ActiveSheet.Shapes("AutoShape 43") 'zu kopierendes Objekt(Shape)
If Intersect(Zelle, Range("I27:EM70")) Is Nothing Then
'aktive Zelle ist nicht im Auswahlbereich
Set ZelleZiel = Range("AF16")
Else
Set ZelleZiel = Zelle
End If
objShape.Copy
ActiveSheet.Paste
'Zuletzt eingefügte Raute als Objekt zuordnen
Set objShape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
'Shape in Zielzelle zentrieren
With objShape
.Left = ZelleZiel.Left + ZelleZiel.Width * 0.5 - .Width * 0.5
.Top = ZelleZiel.Top + ZelleZiel.Height * 0.5 - .Height * 0.5
End With
ActiveSheet.Shapes("AutoShape 43").Select
With Selection
.PrintObject = False
End With
ZelleZiel.Select
ActiveSheet.Protect AllowFormattingCells:=True, AllowInsertingRows:=True, AllowDeletingRows: _
_
=True
End Sub
Nun gibt es Stellen, an denen es super wäre, wenn die Raute automatisch eingefügt wird bzw. ihre Position verändert, wenn man das Meilensteindatum verändert. Und hier kommt Ihr jetzt ins Spiel: geht das? Wenn ja, wie?
Meine Idee ist, dass ich über VBA ständig das Enddatum überwachen lasse und bei Bedarf eine entsprechende Neupositionierung der Raute veranlasse.
Für die Positionsbestimmung müsst Ihr noch folgendes wissen: die Zeile soll die gleiche sein wie die, in der das Datum steht. Die Spalte ergibt sich, indem man in der Zeile 26 das entsprechende Datum sucht und sich den Spaltenbuchstaben nimmt.
So, ich hoffe, ich habe mein Problem ausreichend darlegen können. Leider kann ich die Originaldatei nicht hochladen und hoffe deshalb, dass Ihr mir trotzdem helfen könnt.
Schöne Grüße und vielen Dank schonmal im Voraus
Peter