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

Forumthread: Linie zeichnen

Linie zeichnen
Claus
Hallo,
Wie lautet der Befehl um eine Linie zu zeichnen, und zwar vom Mittelpunkt einer Zelle zum Mittelpunkt einer anderen Zelle? Z.B. von B4 nach C7
Danke schon mal
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Linie zeichnen
08.07.2009 12:59:07
robert
hi,
aus dem forum..
meinst du so ?
gruß
robert

Sub Macro2()
Dim lbx As Long
Dim lby As Long
Dim lex As Long
Dim ley As Long
Dim shp As Shape
With Range("B4")
lbx = .Left + .Width / 2
lby = .Top + .Height / 2
End With
With Range("c7")
lex = .Left + .Width / 2
ley = .Top + .Height / 2
End With
ActiveSheet.Shapes.AddLine lbx, lby, lex, ley
End Sub


Anzeige
AW: Linie zeichnen
08.07.2009 13:18:04
Claus
Hallo Robert,
ah, interessant, dann geht es vermutlich nicht direkt,
sondern man holt sich die Koordinaten der Felder
und zeichnet dann die Linie.
Aber so meinte ich das schon, prima,
vielen Dank für die tolle Lösung.
Komme jetzt grade nicht zum ausprobieren, aber ich
denke das klappt.
Falls wider Erwartung doch nicht, würde ich mich
hier nochmals melden.
Also, vielen Dank und liebe Grüße
Claus
Anzeige
AW: Linie zeichnen
08.07.2009 19:16:47
Claus
Hallo,
hab´s getestet, und es geht wunderbar.
Mein nächstes Stadium wäre folgendes, viell. könntest du mir da auch noch weiter helfen:
In einem zweiten Blatt "Dat" stehen jetzt immer "Linienkoordinaten", z. B.:
A B C D (das sollen die Spalten sein)
2 2 4 5
1 3 7 4
4 4 5 5
Nun sollte mein Makro bei diesem Beispiel also im anderen Blatt "Str" folgende Linien zeichnen:
B2 nach D4, A3 nach G4, D4 nach E5
Wenn da noch mehr Werte stehen entsprechend auch diese Linien. (natürlich können das sehr viele werden, sonst bräuchte ich ja keinen Makro) Ein Farbindex käme auch noch hinzu, aber den kann ich wahrscheinlich selber dazubauen. Obwohl, genial wäre es natürlich, wenn ich in Spalte E (pro Zeile) die Hintergrundfarbe einstellen könnte und der Makro diese quasi erkennt und die Linie dann entsprechend so einfärbt.
(folgendermaßen habe ich bereits modifiziert:
ActiveSheet.Shapes.AddLine(lbx, lby, lex, ley).Select
Selection.ShapeRange.Line.ForeColor.SchemeColor = 40
Selection.ShapeRange.Line.Weight = 1.25
also mit .select dahinter kann ich die Linie noch verändern, wie genau bekomme ich im Makroaufzeichnungsmodus heraus - o.k., das ist laienhaft, aber ich kann halt keine VB-Syntax)
Also nochmal Danke für deine prima Lösung und Superdanke (o.k., ist frech) für weitere Hilfe.
Anzeige
AW: Linie zeichnen
08.07.2009 19:34:50
robert
hi,
frage:
wie ist aus den koordinaten ersichtlich, dass eine linie von B2 nach D4 sein soll ?
blick ich momentan nicht durch :o)
gruß
robert
In einem zweiten Blatt "Dat" stehen jetzt immer "Linienkoordinaten", z. B.:
A B C D (das sollen die Spalten sein)
2 2 4 5
1 3 7 4
4 4 5 5
Nun sollte mein Makro bei diesem Beispiel also im anderen Blatt "Str" folgende Linien zeichnen:
B2 nach D4, A3 nach G4, D4 nach E5
Anzeige
AW: Linie zeichnen
08.07.2009 19:40:38
Claus
Es sind eben immer Zahlen statt Buchstaben. (Rechenoperationen geben eben eher Zahlen als Buchstaben zurück)
2 2 entspricht B2, 4 5 entspricht D5, das ist alles.
Also aus dem Tabellenblatt "Dat" werden quasi die Start- und Endkoordinaten der Linie ausgelesen und im Tabellenblatt "Str" soll entsprechend gezeichnet werden...
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Linien in Excel zeichnen: So geht's


Schritt-für-Schritt-Anleitung

Um in Excel eine Linie zu zeichnen, die vom Mittelpunkt einer Zelle zum Mittelpunkt einer anderen Zelle führt, kannst du folgendes VBA-Makro verwenden:

Sub LinieZeichnen()
    Dim lbx As Long
    Dim lby As Long
    Dim lex As Long
    Dim ley As Long
    With Range("B4")
        lbx = .Left + .Width / 2
        lby = .Top + .Height / 2
    End With
    With Range("C7")
        lex = .Left + .Width / 2
        ley = .Top + .Height / 2
    End With
    ActiveSheet.Shapes.AddLine lbx, lby, lex, ley
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus (Entwicklertools > Makros > wähle "LinieZeichnen" und klicke auf Ausführen).

Mit dieser Methode kannst du eine Linie in Excel zeichnen, die von einer Zelle zur anderen führt.


Häufige Fehler und Lösungen

  • Fehler: "Zelle nicht gefunden"

    • Überprüfe, ob die angegebenen Zellen (z.B. B4, C7) korrekt sind und existieren.
  • Fehler: Linie wird nicht angezeigt

    • Stelle sicher, dass das Makro korrekt ausgeführt wurde und die Zellen sichtbar sind.
  • Fehler: Ungültige Koordinaten

    • Überprüfe die Berechnung der Koordinaten im VBA-Code. Diese müssen in Pixeln angegeben werden.

Alternative Methoden

Neben der Verwendung von VBA kannst du auch die Form-Funktion in Excel nutzen:

  1. Gehe zu „Einfügen“ > „Shapes“.
  2. Wähle „Linie“ aus.
  3. Klicke und ziehe, um die Linie zu erstellen, während du die SHIFT-Taste gedrückt hältst, um eine gerade Linie zu erstellen.

Diese Methode ist einfach, aber weniger flexibel als das Zeichnen mit einem Makro.


Praktische Beispiele

Wenn du mehrere Linien in Excel zeichnen möchtest, kannst du folgendes erweitertes Makro verwenden, das Koordinaten aus einem anderen Blatt ausliest:

Sub LinienVonKoordinaten()
    Dim wsData As Worksheet
    Dim wsStr As Worksheet
    Dim letzteZeile As Long
    Dim i As Long
    Set wsData = ThisWorkbook.Sheets("Dat")
    Set wsStr = ThisWorkbook.Sheets("Str")

    letzteZeile = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row

    For i = 2 To letzteZeile
        Dim startX As Long, startY As Long
        Dim endX As Long, endY As Long
        startX = wsData.Cells(i, 1).Value
        startY = wsData.Cells(i, 2).Value
        endX = wsData.Cells(i, 3).Value
        endY = wsData.Cells(i, 4).Value
        wsStr.Shapes.AddLine wsStr.Cells(startY, startX).Left + wsStr.Cells(startY, startX).Width / 2, _
                             wsStr.Cells(startY, startX).Top + wsStr.Cells(startY, startX).Height / 2, _
                             wsStr.Cells(endY, endX).Left + wsStr.Cells(endY, endX).Width / 2, _
                             wsStr.Cells(endY, endX).Top + wsStr.Cells(endY, endX).Height / 2
    Next i
End Sub

Dieses Makro liest die Koordinaten aus dem Blatt „Dat“ aus und zeichnet die Linien im Blatt „Str“.


Tipps für Profis

  • Experimentiere mit den Eigenschaften der Linien, um verschiedene Farben und Stile einzustellen. Du kannst den Farbindex und die Linienstärke im VBA-Code anpassen.
  • Verwende das Makroaufzeichnungswerkzeug, um den VBA-Code zu lernen, indem du verschiedene Formatierungen in Excel anwendest.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe der Linie ändern?
Du kannst die Farbe der Linie ändern, indem du den ForeColor-Eigenschaft im VBA-Code anpasst.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die meisten VBA-Funktionen sind in den meisten Excel-Versionen ab 2007 verfügbar. Achte darauf, dass du die richtige Syntax verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige