Wie kann man in Excel Linien drehen?

3 Antworten

Ich habe mal auf die Schnelle den Makro-Rekorder angeschmissen und den Wert für die Drehung durch den Wert in der Zelle A1 ersetzt. Wenn in A1 322 steht, für 322°, dann kommt es in etwa hin.

 ActiveSheet.Shapes.AddShape(msoShapeRectangle, 230.25, 83.25, 181.5, 17.25). _
Select
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 232.5, 56.25, 180.75, 15.75). _
Select
Selection.ShapeRange.IncrementRotation Range("A1").Value '332.1445666667
Selection.ShapeRange.IncrementLeft -17.25
Selection.ShapeRange.IncrementTop -14.9353543307
Range("A1").Select

EIN Problem wird sein, dass das Rechteck immer um den Mittelpunkt gedreht wird und man es dann verschieben muss.
Man müsste also irgendwie ausrechnen, um wieviel man Left und Top verschieben muss, damit es wieder passt.

Das alles macht natürlich nur Sinn, wenn Du Dich einigermaßen mit VBA auskennst.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Oubyi, UserMod Light  30.07.2017, 15:00

P.S.: Ich habe noch versucht Left und Top des zweiten Balkens auf die gleichen Werte wie beim ersten zu setzten, aber das klappt auch nicht, da der zweite gedreht ist.
Um die Rechnerei wird man wohl nicht herum kommen und damit bin ich wahrscheinlich überfordert.

    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 230.25, 83.25, 181.5, 17.25). _
Select
Selection.ShapeRange.Name = "Balken1"
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 232.5, 56.25, 180.75, 15.75). _
Select
Selection.ShapeRange.Name = "Balken2"
ActiveSheet.Shapes("Balken2").IncrementRotation Range("A1").Value
ActiveSheet.Shapes("Balken2").Left = ActiveSheet.Shapes("Balken1").Left
ActiveSheet.Shapes("Balken2").Top = ActiveSheet.Shapes("Balken1").Top

Range("A1").Select
0

Nur mit VBA


Bauing85 
Beitragsersteller
 29.07.2017, 23:55

Ist das schwierig? 

Ich mein ist ja nur ne Linie die auf einen Wert reagiert.

Hast du vielleicht ein Beispielcode?

0
agent888  30.07.2017, 10:51
@Bauing85

Was ist schon schwierig... Wenn du es erlernen möchtest brauchst du deine Zeit, ansonsten gibt es bestimmt bereits Beispielcode im Internet

1

ein Balken ist in einer 2-D-Darstellung ein (langgezogenes) Rechteck.

als erstes musst Du definieren, um welchen Punkt gedreht werden soll. Da xl kein Zeichenprogramm ist, musst Du die zB Oberkante des Balkens um den linken oberen Punkt drehen und dann das Ende der Oberkante definieren (als x-y), die Fkt dazu sind Tangens()*Balkenlänge und Cot()*Balkenlänge jeweils zum Drehpunkt(Def. ebenfalls über x,y) addiert.

All das dann in VBA umsetzen. Man kann zwar mit definierten Variablen arbeiten, trotzdem nicht ganz einfach.

Die anderen Punkte errechnen sich dann analog, also recht kompliziert, das tu ich mir heute nicht mehr an.

VBA erfordert schon "ein wenig" Einarbeitung.