Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: viele Pfeile via VBA erstellen, schleife/loop

viele Pfeile via VBA erstellen, schleife/loop
rene
Hallo,
für ein ehrenamtliches Projekt sollen auf einer Landkarte in Excel verschiedene Bewegungen mit Pfeilen in unterschiedlichen Farben, Stärken und Positionen angegeben werden.
Ich weiß wie ich mit vba die werte aus Zellen auslese und auf deren Grundlage einen Pfeil an der angegeben Position erstellen lasse.
Mein Problem ist, dass ich auf der Grafik beliebig viele (über 100) Pfeile mit einem Macroaufruf erstellen lassen möchte. Dazu brauch ich eine schleife, die einen Zellbereich verarbeitet.
Details siehe anlage. Im Tabelle1 erstelle ich einen Pfeil. Aber wie bekomme ich das hin, wenn ich viele Pfeile erstellen lassen möchte (siehe Tabelle2)?
https://www.herber.de/bbs/user/69252.xls
Vorab besten Dank
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: viele Pfeile via VBA erstellen, schleife/loop
26.04.2010 22:41:28
Mustafa
Hallo Rene,
meinst du so wie in Tabelle2 :
https://www.herber.de/bbs/user/69253.xls
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.
AW: viele Pfeile via VBA erstellen, schleife/loop
26.04.2010 22:50:10
rene
genau so *freu* :-)
aber bitte, ist es möglich dass ich dass auch verstehe? ;-)
vlt. ein oder zwei kommentare für mich und alle anderen im forum?
wie geht das? bzw. was macht was?
Sub pfeil2()
Dim lZeile As Long
For lZeile = 2 To 20
If Not Cells(lZeile, 1) = "" Then
ZelleA = Cells(lZeile, 1).Value
ZelleB = Cells(lZeile, 2).Value
Ax = Range(ZelleA).Left + Range(ZelleA).Width / 2
Ay = Range(ZelleA).Top + Range(ZelleA).Height / 2
Bx = Range(ZelleB).Left + Range(ZelleB).Width / 2
By = Range(ZelleB).Top + Range(ZelleB).Height / 2
ActiveSheet.Shapes.AddLine(Ax, Ay, Bx, By).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Line.ForeColor.SchemeColor = Cells(lZeile, 4).Value
Selection.ShapeRange.Line.Weight = Cells(lZeile, 3).Value
End If
Next
End Sub

Anzeige
AW: viele Pfeile via VBA erstellen, schleife/loop
26.04.2010 22:59:55
Mustafa
Versuch einer Beschreibung:
Sub pfeil2()
Dim lZeile As Long
For lZeile = 2 To 20                           ' Anfang der Schleife lZeile steht hier für die  _
Zeilennummer von Zeile 2 bis Zeile 20
If Not Cells(lZeile, 1) = "" Then     ' Wenn Zelle(Zeile2,Spalte1) nicht = "" dann arbeite  _
den Code ab.
ZelleA = Cells(lZeile, 1).Value       'ZelleA bekommt den Wert aus Zelle(lZeile,Spalte1)
ZelleB = Cells(lZeile, 2).Value   'ZelleB bekommt den Wert aus Zelle(lZeile,Spalte2)
Ax = Range(ZelleA).Left + Range(ZelleA).Width / 2  ' Anfangspsoition horizontaldes  _
Pfeiles errechnen
Ay = Range(ZelleA).Top + Range(ZelleA).Height / 2 ' Anfangsposition vertikal des  _
Pfeiles errechnen
Bx = Range(ZelleB).Left + Range(ZelleB).Width / 2 ' Endpostion horizontal des Pfeiles  _
errechnen
By = Range(ZelleB).Top + Range(ZelleB).Height / 2 ' Endposition vertikal des Pfeiles  _
errechnen
ActiveSheet.Shapes.AddLine(Ax, Ay, Bx, By).Select ' Pfeil eibfügen und selektieren
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle ' Pfeiltyp angeben
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium 'Pfeilkopflänge  _
angeben
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium 'Pfeilkopfbreite  _
angeben
Selection.ShapeRange.Line.ForeColor.SchemeColor = Cells(lZeile, 4).Value ' Farbe des  _
Pfeiles aus Zelle(lZeile,spalte4 ermitteln
Selection.ShapeRange.Line.Weight = Cells(lZeile, 3).Value ' Pfeildicke aus Zelle(lZeile, _
Spalte3) ermitteln
End If    ' Wenn Zelle(Zeile2,Spalte1) nicht = "" Dann Sprung hierher
Next ' Schleifenende
End Sub

Gruß aus der Domstadt Köln.
Anzeige
Korrektur
26.04.2010 23:04:54
Mustafa

Sub pfeil2()
Dim lZeile As Long
For lZeile = 2 To 20                           ' Anfang der Schleife lZeile steht hier für die   _
_
Zeilennummer von Zeile 2 bis Zeile 20
If Not Cells(lZeile, 1) = "" Then     ' Wenn Zelle(lZeile,Spalte1) nicht = "" dann arbeite   _
_
den Code ab.
ZelleA = Cells(lZeile, 1).Value       'ZelleA bekommt den Wert aus Zelle(lZeile,Spalte1)
ZelleB = Cells(lZeile, 2).Value   'ZelleB bekommt den Wert aus Zelle(lZeile,Spalte2)
Ax = Range(ZelleA).Left + Range(ZelleA).Width / 2  ' Anfangspsoition horizontal des  _
Pfeiles errechnen
Ay = Range(ZelleA).Top + Range(ZelleA).Height / 2 ' Anfangsposition vertikal des  _
Pfeiles errechnen
Bx = Range(ZelleB).Left + Range(ZelleB).Width / 2 ' Endpostion horizontal des Pfeiles   _
_
errechnen
By = Range(ZelleB).Top + Range(ZelleB).Height / 2 ' Endposition vertikal des Pfeiles  _
errechnen
ActiveSheet.Shapes.AddLine(Ax, Ay, Bx, By).Select ' Pfeil einfügen und selektieren
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle ' Pfeiltyp angeben
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium 'Pfeilkopflänge  _
_
angeben
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium 'Pfeilkopfbreite   _
_
angeben
Selection.ShapeRange.Line.ForeColor.SchemeColor = Cells(lZeile, 4).Value ' Farbe des  _
Pfeiles aus Zelle(lZeile,Spalte4) ermitteln
Selection.ShapeRange.Line.Weight = Cells(lZeile, 3).Value ' Pfeildicke aus Zelle(lZeile, _
_
Spalte3) ermitteln
End If    ' Wenn Zelle(lZeile,Spalte1) = "" Dann Sprung hierher
Next ' Schleifenende
End Sub

Anzeige
AW: viele Pfeile via VBA erstellen, schleife/loop
26.04.2010 23:06:39
rene
wow, ich denke, dass ich dass in Zukunft nun auch selber schaffen sollte dank deiner Kommentare. 1000 Dank und gute Nacht. Gruß aus Dresden
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Viele Pfeile in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um mehrere Pfeile in Excel mithilfe von VBA zu erstellen, folge dieser Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub pfeil2()
       Dim lZeile As Long
       For lZeile = 2 To 20
           If Not Cells(lZeile, 1) = "" Then
               ZelleA = Cells(lZeile, 1).Value
               ZelleB = Cells(lZeile, 2).Value
               Ax = Range(ZelleA).Left + Range(ZelleA).Width / 2
               Ay = Range(ZelleA).Top + Range(ZelleA).Height / 2
               Bx = Range(ZelleB).Left + Range(ZelleB).Width / 2
               By = Range(ZelleB).Top + Range(ZelleB).Height / 2
               ActiveSheet.Shapes.AddLine(Ax, Ay, Bx, By).Select
               Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
               Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
               Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
               Selection.ShapeRange.Line.ForeColor.SchemeColor = Cells(lZeile, 4).Value
               Selection.ShapeRange.Line.Weight = Cells(lZeile, 3).Value
           End If
       Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Fülle die Zellen in Spalte A und B mit den Namen der Zellen, zwischen denen die Pfeile gezeichnet werden sollen. In Spalte C gib die Dicke des Pfeils und in Spalte D die Farbe an.

  6. Führe das Makro aus: Drücke ALT + F8, wähle pfeil2 und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht.

    • Lösung: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind.
  • Fehler: Pfeile erscheinen nicht.

    • Lösung: Überprüfe, ob die Zellen in Spalte A und B korrekt benannt sind und ob die entsprechenden Werte in Spalte C und D vorhanden sind.
  • Fehler: Pfeile sind nicht sichtbar.

    • Lösung: Überprüfe die Farben und Dickenwerte in den Zellen. Vielleicht sind die Farben zu hell oder die Dicke zu dünn.

Alternative Methoden

Eine andere Möglichkeit, Pfeile in Excel zu zeichnen, ist die Verwendung von Formen:

  1. Gehe zu Einfügen > Formen.
  2. Wähle die Form "Linie" oder "Pfeil".
  3. Zeichne den Pfeil manuell zwischen den Zellen.

Diese Methode eignet sich gut für eine kleinere Anzahl von Pfeilen, da sie keine Programmierung erfordert.


Praktische Beispiele

  • Beispiel 1: Du möchtest Pfeile zwischen Zelle A1 und B1 zeichnen. Füge die Werte ein:

    • A1: "A1"
    • B1: "B1"
    • C1: 2 (Pfeildicke)
    • D1: 3 (Farbe)
  • Beispiel 2: Für ein Diagramm kannst du Pfeile in Excel einfügen, um die Richtung von Daten zu verdeutlichen. Nutze die gleiche VBA-Methode, um die Pfeile zwischen den Diagrammwerten zu zeichnen.


Tipps für Profis

  • Experimentiere mit verschiedenen Pfeiltypen, indem du die Eigenschaften im VBA-Code anpasst.
  • Verwende benannte Bereiche, um die Zellen einfacher zu referenzieren.
  • Du kannst die Schleife erweitern, um mehr als 100 Pfeile zu erstellen, indem du den Endwert in der For-Schleife anpasst.

FAQ: Häufige Fragen

1. Wie kann ich die Pfeile in einer bestimmten Farbe zeichnen?
Die Farbe wird durch den Wert in Spalte D bestimmt. Stelle sicher, dass dort ein gültiger Farbcode angegeben ist.

2. Kann ich die Pfeile in einem Diagramm einfügen?
Ja, du kannst die gleiche Methode verwenden, um Pfeile in einem Excel-Diagramm einzufügen. Stelle sicher, dass die Zellen, auf die verwiesen wird, im Diagramm sichtbar sind.

3. Wie kann ich die Dicke der Pfeile anpassen?
Die Dicke wird durch den Wert in Spalte C festgelegt. Du kannst diesen Wert erhöhen, um dickere Pfeile zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige