Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

zeichnen in excel abhängig von daten

zeichnen in excel abhängig von daten
daten
hi
folgendes problem für das ich im internet noch keine lösung gefunden habe. vieleicht war auch die fragestellung nicht so glücklich.
ich möchte geometrische masstäbliche figuren zeichen mit pfeilen unter bestimmten winkeln in der figur.
bis jetzt habe ich mir eine tabelle mit koordinaten erstellt, obere block die figur darunter der pfeil und das ganze mit dem x/y diagramm darstellen lassen.
x y
0,2 3,5
1,6 -4
-3 -8
0,2 3,5
-1,1 -2,6
3 4
1. das bild ist verzerrt. gibt es einen zellfunktion oder kann man eine erstellen, die das behebt?
stelle mir folgendes vor = diagrammbreite(a16) = diagrammhoehe(b16)
als ergenis true oder false
die breite und höhe kann ich dann 1:1 machen oder sogar 2:2 als verkleinerungsfaktor
2. wie bekomme ich die pfeilspitze an den anfang oder ende
stelle mir folgendes vor = pfeil(xa,ya,aspitze,xe,ye,espitze) spitze 1=spitze 0= gerades ende
als ergenis true oder false
oder noch sinnvoller für mich =pfeil( xa,ya,aspitze, länge, winkel) spitze 1=spitzeanfang 0= spitze ende
3. oder kann ich sonnst die autoformen per zellwerte beeinflussen?
ist sowas denkbar.
ich kann noch kein vba
danke im voraus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: zeichnen in excel abhängig von daten
11.10.2009 09:23:37
daten
Hallo Michael,
mir ist nicht so ganz klar, ob du das in einem XY-Diagramm oder mit Autoformen darstellen willst.
Prinzipiell würde ich so was nicht mit Excel, sondern eher mit Visio machen.
Hier ein Bsp mit Autoformen:
Userbild
Option Explicit
Sub DrawShapes()
Dim sh As Shape, i&
Dim sngBeginX!, sngBeginY!, sngEndX!, sngEndY!, sngLen!, sngAng!
Dim blnBeginArrow As Boolean, blnEndArrow As Boolean
With Sheets("Tabelle1")
For Each sh In .Shapes
If sh.Name Like "Line*" Then sh.Delete
Next
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
sngBeginX = .Cells(i, 1)
sngBeginY = .Cells(i, 2)
sngLen = .Cells(i, 3)
sngAng = .Cells(i, 4) / 180 * Application.Pi
sngEndX = sngBeginX + sngLen * Cos(sngAng)
sngEndY = sngBeginY - sngLen * Sin(sngAng)
blnBeginArrow = .Cells(i, 5)
blnEndArrow = .Cells(i, 6)
Set sh = .Shapes.AddLine(sngBeginX, sngBeginY, sngEndX, sngEndY)
If blnBeginArrow Then
sh.Line.BeginArrowheadStyle = msoArrowheadTriangle
sh.Line.BeginArrowheadWidth = msoArrowheadWidthMedium
sh.Line.BeginArrowheadLength = msoArrowheadLengthMedium
End If
If blnEndArrow Then
sh.Line.EndArrowheadStyle = msoArrowheadTriangle
sh.Line.EndArrowheadWidth = msoArrowheadWidthMedium
sh.Line.EndArrowheadLength = msoArrowheadLengthMedium
End If
sh.Line.Visible = msoTrue
Next
End With
End Sub
Gruß
Christian
Anzeige
AW: zeichnen in excel abhängig von daten
11.10.2009 21:52:59
daten
hi
super. danke das klappt ja toll. so habe ich es mir vorgestellt.
jetzt werde ich größenwahnsinnig.
gibt es da befehle die kreise und noch besser teilkreise zeichnen oder muss ich mir ein polygon zusammen bauen. wäre auch nicht so schlimm.
aber noch ein zusatz wäre auch super, einstellen der strichdicke und der linien art ( gestrichelt, strichpunktiert usw.).
zu visio: das programm habe ich leider nicht in meinem paket und dann ist die frage ob man dorte werte erechnen kann bzw. excel tabellen übergeben kann.
aber vorerst mal ein riesen lob.
danke michael
AW: zeichnen in excel abhängig von daten
12.10.2009 18:45:48
daten
Hallo,
Linienstärke und -Typ lässt sich natürlich in das Script noch einbauen. zB:
in Spalte G "LineWeight": Werte mit Schrittweite 0,25 (also 0,25; 0,5; ...)
in Spalte H "LineStyle": ganze Zahlen zwischen 1 und 8 ( 1 = solid, 2 = RoundDot, ...)
Code s.u.
Deine anderen Vorstellungen bzw. Kreise, Kreissegmente ließen sich auch realisieren, aber das sprengt dann doch den Rahmen eines Forums.
Probier einfach mal mit den Autoformen rum und zeichne dir das mit dem Makrorecorder auf.
Mit meinem Code als Vorlage und etwas üben...
Gruß
Christian

Option Explicit
Sub DrawLines()
Dim sh As Shape, intStyle%, i&
Dim sngBeginX!, sngBeginY!, sngEndX!, sngEndY!
Dim sngLen!, sngAng!, sngWght!
Dim blnBeginArrow As Boolean, blnEndArrow As Boolean
With Sheets("Tabelle2")
For Each sh In .Shapes
If sh.Name Like "Line*" Then sh.Delete
Next
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
sngBeginX = .Cells(i, 1)
sngBeginY = .Cells(i, 2)
sngLen = .Cells(i, 3)
sngAng = .Cells(i, 4) / 180 * Application.Pi
sngEndX = sngBeginX + sngLen * Cos(sngAng)
sngEndY = sngBeginY - sngLen * Sin(sngAng)
blnBeginArrow = .Cells(i, 5)
blnEndArrow = .Cells(i, 6)
sngWght = .Cells(i, 7)
intStyle = .Cells(i, 8)
Set sh = .Shapes.AddLine(sngBeginX, sngBeginY, sngEndX, sngEndY)
If blnBeginArrow Then
sh.Line.BeginArrowheadStyle = msoArrowheadTriangle
sh.Line.BeginArrowheadWidth = msoArrowheadWidthMedium
sh.Line.BeginArrowheadLength = msoArrowheadLengthMedium
End If
If blnEndArrow Then
sh.Line.EndArrowheadStyle = msoArrowheadTriangle
sh.Line.EndArrowheadWidth = msoArrowheadWidthMedium
sh.Line.EndArrowheadLength = msoArrowheadLengthMedium
End If
sh.Line.Weight = sngWght
sh.Line.DashStyle = intStyle
sh.Line.Visible = msoTrue
Next
End With
End Sub

Anzeige
AW: zeichnen in excel abhängig von daten
12.10.2009 19:07:37
daten
ok danke werde ich versuchen
cu michael

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige