Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linienobjekt in VBA in einem bestimmten Winkel zeichnen

541 views
Skip to first unread message

Martin Beering

unread,
Feb 9, 2002, 10:30:58 AM2/9/02
to
Hallo NG'ler,

habe fogendes Problem, welches ich per VBA lösen muss:

Das Problem besteht darin, eine Line in einem bestimmten in
Winkel in ein Koordinatensystem zu zeichnen. Bisher habe ich
folgenden Code geschrieben:

Sub Winkel_Zeichnen()

Set myDocument = Worksheets(1)
ActiveSheet.ChartObjects.Add(10, 10, 400, 400).Name = "Winkel"

With myDocument.Shapes.AddLine(20, 330, 400, 330).Line
.DashStyle = msoLineDash
.ForeColor.RGB = RGB(255, 0, 0)
End With
With myDocument.Shapes.AddLine(100, 20, 100, 400).Line
.DashStyle = msoLineDash
.ForeColor.RGB = RGB(255, 0, 0)
End With

ActiveSheet.Shapes.AddLine(100, 330, 100, 30).Select


End Sub

Zunächst erstelle ein ChartObjekt und zeichne dort zwei Linien ein,
die ein Koordinatensystem andeuten sollen. Nun möchte ich eine Linie
in einem bestimmten Winkel zeichnen. Ich habe mir gedacht zu-
nächst eine Linie zu zeichnen <ActiveSheet.Shapes.AddLine(100, 330, 100,
30).Select >
und dann diese Linie zu drehen. Finde aber keinen Ansatz wie man
das machen kann.

Hat jemand eine Idee. Bin für jeden Hinweis dankbar.

Martin Beering


Erik

unread,
Feb 9, 2002, 11:38:13 AM2/9/02
to
Hey,

Sinus und Cosinus lassen grüßen ;-)

Leg den Ursprund Deines Koordinatensystems in 2 Variablen, dann gehts viel
leichter.
ux =100
uy= 100 (z.B.)

Die Länge Deiner Linie sei in der Variablen länge
Der Winkel sei in Grad in der Variablen winkel
Zum Winkel umrechnen müssen wir Pi definieren:
Pi = 3.14159265358979

With myDocument.Shapes.AddLine(ux, uy, länge * Cos(Pi / 180 * winkel) +
ux, -länge * Cos(Pi / 180 * winkel) + uy)
End with

Grüße ERIK

"Martin Beering" <m...@beering.com> schrieb im Newsbeitrag
news:a43fbk$g8t$04$1...@news.t-online.com...

Norbert Nowotny

unread,
Feb 9, 2002, 3:14:04 PM2/9/02
to
On Sat, 9 Feb 2002 16:30:58 +0100, "Martin Beering" <m...@beering.com>
wrote:

Hallo Martin,

versuchs mal damit:

>Hallo NG'ler,
>
>habe fogendes Problem, welches ich per VBA lösen muss:
>
>Das Problem besteht darin, eine Line in einem bestimmten in
>Winkel in ein Koordinatensystem zu zeichnen. Bisher habe ich
>folgenden Code geschrieben:
>
>Sub Winkel_Zeichnen()
>
> Set myDocument = Worksheets(1)
> ActiveSheet.ChartObjects.Add(10, 10, 400, 400).Name = "Winkel"
>
> With myDocument.Shapes.AddLine(20, 330, 400, 330).Line
> .DashStyle = msoLineDash
> .ForeColor.RGB = RGB(255, 0, 0)
> End With
> With myDocument.Shapes.AddLine(100, 20, 100, 400).Line
> .DashStyle = msoLineDash
> .ForeColor.RGB = RGB(255, 0, 0)
> End With
>
> ActiveSheet.Shapes.AddLine(100, 330, 100, 30).Select

Selection.ShapeRange.IncrementRotation 60

oder auch

Selection.ShapeRange.IncrementRotation -30

>
>End Sub

Ein Tip:
Wenn dir ein Befehl nicht bekannt ist, nimm ein Makro der gewünschten
Aktion auf und paß es dann entsprechend an.
Das hab ich auch so gemacht.

Tschau Norbert

Erik

unread,
Feb 10, 2002, 6:26:23 AM2/10/02
to
Hey,

> With myDocument.Shapes.AddLine(ux, uy, länge * Cos(Pi / 180 * winkel) +

> ux, -länge * Cos(Pi / 180 * winkel) + uy) > End With
Meine erste Formel hat leider einen kleinen Flüchtigkeitfehler. Korrekt ist:

ux = 100
uy = 100
länge = 100
winkel = 30 ' (z.B.)

Pi = 3.14159265358979

With ActiveSheet.Shapes.AddLine(ux, uy, länge * Cos(Pi / 180 * winkel) +
ux, -länge * Sin(Pi / 180 * winkel) + uy)
linienname = .Name
End With

> Ich bins nochmal, weis Du vielleicht auch, wie man eine
> gezeichnete Linie auswählt und wieder löscht.

S.o. - hier merken wir uns den Namen des Objektes in der Variablen
linienname
So kann man die Linie löschen mit:

ActiveSheet.Shapes(linienname).Delete

Grüße ERIK

0 new messages