Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kreise zeichnen

Forumthread: Kreise zeichnen

Kreise zeichnen
13.10.2008 12:49:00
Hanspeter
Hallo zusammen,
wie kann ich per Makro einen Kreis zeichnen lassen, von welchem ich Größe und Position bestimmen und später verändern kann.
Beispiel:
Ich möchte einen Kreis auf der Position 150,200 mit einen Durchmesser von 30mm
Zelle A1 = 150
ZelleA2=200
Zelle A3= 30
Ist so etwas möglich?
Viele Grüße
Hanspeter
XP prof SP2
Office 2003
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kreise zeichnen
13.10.2008 12:54:02
Tobias
Hallo Hanspeter!
Makro aufzeichnen und Kreis erstellen. Anschließend den Quellcode anpassen. Ob der Kreis auf DEINEM Monitor dann wirklich 30 mm Durchmesser hat ist ein anderes Thema.
Sub ZeichneKreis()
    Dim dblLeft As Double, dblTop As Double, dblDurchmesser As Double
    dblLeft = Range("A1")
    dblTop = Range("A2")
    dblDurchmesser = Range("A3")
    Call ActiveSheet.Shapes.AddShape(msoShapeOval, dblLeft, dblTop, dblDurchmesser, dblDurchmesser)
End Sub
Viele Grüße, Tobi
http://www.vba-blog.de/
AW: Kreise zeichnen
Hanspeter

Hallo Tobi,
vielen Dank, die "Produktion" klappt perfekt - doch wie kann ich den produzierten Kreis wieder ansprechen und verändern? Wenn es mehrere Kreise sind. Bei den Eigenschaften finde ich weder Positionsangaben noch Name. Nur oben im Namensfeld steht dann zB. Ellipse 18. Wo / Wie bringe ich das in VBA unter?
Gruß Hanspeter
AW: Kreise zeichnen
Tobias

Hallo Hanspeter!
Zelle A4 = Name des Kreises. Die zweite Funktion zeigt Dir auch, wie Du wieder auf die Kreise zugreifen kannst (die einfache Lösung set obj = Shapes("Kreis 1") geht - glaube ich - nicht. Wer es besser weiß darf sich gerne melden! ).
Sub ZeichneKreis()
    Dim dblLeft As Double, dblTop As Double, dblDurchmesser As Double
    Dim strName As String
    Dim obj As Shape
    dblLeft = Range("A1")
    dblTop = Range("A2")
    dblDurchmesser = Range("A3")
    strName = Range("A4")
    Set obj = ActiveSheet.Shapes.AddShape(msoShapeOval, dblLeft, dblTop, dblDurchmesser, dblDurchmesser)
    obj.Name = strName
End Sub
Sub ZugriffAufKreis()
    Dim strName As String
    Dim obj As Shape
    strName = Range("A4")
    For Each obj In ActiveSheet.Shapes
        If obj.Name = strName Then Exit For
    Next
    'mit obj kannst Du jetzt auf die Eigenschafte Deines Kreises zugreifen
    obj.Left = 0
End Sub
Viele Grüße, Tobi
http://www.vba-blog.de/
AW: Kreise zeichnen
Hanspeter

Vielen Dank Tobi,
es funkt :-)
Gruß und danke auch an Karin.
Hanspeter
Eigenschaften von Shapes ändern
Shapes

Hi Tobi,
wenn der Name des Kreis-Elementes bekannt ist, geht der Zugriff auf die Eigenschaften auch ohne Schleife

Sub kreis_eigenschaften_aendern()
ActiveSheet.Shapes(Range("A4")).Left = 0
End Sub




Heute ist nicht mein Tag...
Tobias

...genau das hatte ich vorhin ausprobiert. Ohne Erfolg. Hatte mich wohl vertippt. Grummel!
Lieben Gruß, Tobi
http://www.vba-blog.de/
Meiner auch nicht :-) Negativer Left Wert
Reinhard

Hallo Karin, Interessierte,
ich habe doch schon mit negativen "Left"-Werten gearbeitet *glaub*,jedenfalls konnte ich sich bewegende Objekte die von links nach rechts "laufen", links langsam aus dem Nichts auftauchen lassen.
Jetzt gelingt mir das aber nicht mit dem Kreis, der fängt irgnedwie immer bei left = 0 an und taucht links nicht so auf wie er rechts verschwindet :-(

Sub ZugriffAufKreis()
Dim strName As String, intN, intNN, Pause
Range("A3") = 100
strName = Range("A4")
For intN = 1 To 5
For intNN = -Range("A3") To 700 + Range("A3") Step 3
ActiveSheet.Shapes(strName).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub


Gruß
Reinhard

AW: Negativer Left Wert
Beverly

Hi Reinhard,
m. E. funktionert das nur, wenn du bei 0 beginnst (oder eben bei einem positiven Wert):

Sub ZugriffAufKreis()
Dim intN As Integer, intNN As Integer, Pause As Long
For intN = 1 To 5
For intNN = 0 To 700 Step 3
ActiveSheet.Shapes(Range("A4")).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub




Alles klar, negatives Left geht mit Userform
Reinhard

Hallo Karin,
du hast Recht.
Ich hatte seinerzeit wohl eine UF o.ä. genommen, damit geht das.

Private Sub CommandButton1_Click()
Dim n, Pause
For n = -300 To 600 Step 3
UserForm1.Left = n
DoEvents
For Pause = 1 To 1000000
Next Pause
Next n
End Sub


Gruß
Reinhard

AW: Kreise zeichnen
Beverly

Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




AW: Kreise zeichnen
Beverly

Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




Anzeige
AW: Kreise zeichnen
13.10.2008 13:16:00
Hanspeter
Hallo Tobi,
vielen Dank, die "Produktion" klappt perfekt - doch wie kann ich den produzierten Kreis wieder ansprechen und verändern? Wenn es mehrere Kreise sind. Bei den Eigenschaften finde ich weder Positionsangaben noch Name. Nur oben im Namensfeld steht dann zB. Ellipse 18. Wo / Wie bringe ich das in VBA unter?
Gruß Hanspeter
Anzeige
AW: Kreise zeichnen
13.10.2008 13:23:50
Tobias
Hallo Hanspeter!
Zelle A4 = Name des Kreises. Die zweite Funktion zeigt Dir auch, wie Du wieder auf die Kreise zugreifen kannst (die einfache Lösung set obj = Shapes("Kreis 1") geht - glaube ich - nicht. Wer es besser weiß darf sich gerne melden! ).
Sub ZeichneKreis()
    Dim dblLeft As Double, dblTop As Double, dblDurchmesser As Double
    Dim strName As String
    Dim obj As Shape
    dblLeft = Range("A1")
    dblTop = Range("A2")
    dblDurchmesser = Range("A3")
    strName = Range("A4")
    Set obj = ActiveSheet.Shapes.AddShape(msoShapeOval, dblLeft, dblTop, dblDurchmesser, dblDurchmesser)
    obj.Name = strName
End Sub
Sub ZugriffAufKreis()
    Dim strName As String
    Dim obj As Shape
    strName = Range("A4")
    For Each obj In ActiveSheet.Shapes
        If obj.Name = strName Then Exit For
    Next
    'mit obj kannst Du jetzt auf die Eigenschafte Deines Kreises zugreifen
    obj.Left = 0
End Sub
Viele Grüße, Tobi
http://www.vba-blog.de/
AW: Kreise zeichnen
Hanspeter

Vielen Dank Tobi,
es funkt :-)
Gruß und danke auch an Karin.
Hanspeter
Eigenschaften von Shapes ändern
Shapes

Hi Tobi,
wenn der Name des Kreis-Elementes bekannt ist, geht der Zugriff auf die Eigenschaften auch ohne Schleife

Sub kreis_eigenschaften_aendern()
ActiveSheet.Shapes(Range("A4")).Left = 0
End Sub




Heute ist nicht mein Tag...
Tobias

...genau das hatte ich vorhin ausprobiert. Ohne Erfolg. Hatte mich wohl vertippt. Grummel!
Lieben Gruß, Tobi
http://www.vba-blog.de/
Meiner auch nicht :-) Negativer Left Wert
Reinhard

Hallo Karin, Interessierte,
ich habe doch schon mit negativen "Left"-Werten gearbeitet *glaub*,jedenfalls konnte ich sich bewegende Objekte die von links nach rechts "laufen", links langsam aus dem Nichts auftauchen lassen.
Jetzt gelingt mir das aber nicht mit dem Kreis, der fängt irgnedwie immer bei left = 0 an und taucht links nicht so auf wie er rechts verschwindet :-(

Sub ZugriffAufKreis()
Dim strName As String, intN, intNN, Pause
Range("A3") = 100
strName = Range("A4")
For intN = 1 To 5
For intNN = -Range("A3") To 700 + Range("A3") Step 3
ActiveSheet.Shapes(strName).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub


Gruß
Reinhard

AW: Negativer Left Wert
Beverly

Hi Reinhard,
m. E. funktionert das nur, wenn du bei 0 beginnst (oder eben bei einem positiven Wert):

Sub ZugriffAufKreis()
Dim intN As Integer, intNN As Integer, Pause As Long
For intN = 1 To 5
For intNN = 0 To 700 Step 3
ActiveSheet.Shapes(Range("A4")).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub




Alles klar, negatives Left geht mit Userform
Reinhard

Hallo Karin,
du hast Recht.
Ich hatte seinerzeit wohl eine UF o.ä. genommen, damit geht das.

Private Sub CommandButton1_Click()
Dim n, Pause
For n = -300 To 600 Step 3
UserForm1.Left = n
DoEvents
For Pause = 1 To 1000000
Next Pause
Next n
End Sub


Gruß
Reinhard

AW: Kreise zeichnen
Beverly

Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




AW: Kreise zeichnen
Beverly

Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




Anzeige
AW: Kreise zeichnen
13.10.2008 13:44:13
Hanspeter
Vielen Dank Tobi,
es funkt :-)
Gruß und danke auch an Karin.
Hanspeter
Eigenschaften von Shapes ändern
13.10.2008 13:45:00
Shapes
Hi Tobi,
wenn der Name des Kreis-Elementes bekannt ist, geht der Zugriff auf die Eigenschaften auch ohne Schleife

Sub kreis_eigenschaften_aendern()
ActiveSheet.Shapes(Range("A4")).Left = 0
End Sub




Anzeige
Heute ist nicht mein Tag...
13.10.2008 13:52:00
Tobias
...genau das hatte ich vorhin ausprobiert. Ohne Erfolg. Hatte mich wohl vertippt. Grummel!
Lieben Gruß, Tobi
http://www.vba-blog.de/
Meiner auch nicht :-) Negativer Left Wert
13.10.2008 14:08:00
Reinhard
Hallo Karin, Interessierte,
ich habe doch schon mit negativen "Left"-Werten gearbeitet *glaub*,jedenfalls konnte ich sich bewegende Objekte die von links nach rechts "laufen", links langsam aus dem Nichts auftauchen lassen.
Jetzt gelingt mir das aber nicht mit dem Kreis, der fängt irgnedwie immer bei left = 0 an und taucht links nicht so auf wie er rechts verschwindet :-(

Sub ZugriffAufKreis()
Dim strName As String, intN, intNN, Pause
Range("A3") = 100
strName = Range("A4")
For intN = 1 To 5
For intNN = -Range("A3") To 700 + Range("A3") Step 3
ActiveSheet.Shapes(strName).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub


Gruß
Reinhard

Anzeige
AW: Negativer Left Wert
13.10.2008 15:21:00
Beverly
Hi Reinhard,
m. E. funktionert das nur, wenn du bei 0 beginnst (oder eben bei einem positiven Wert):

Sub ZugriffAufKreis()
Dim intN As Integer, intNN As Integer, Pause As Long
For intN = 1 To 5
For intNN = 0 To 700 Step 3
ActiveSheet.Shapes(Range("A4")).Left = intNN
For Pause = 1 To 100000
Next Pause
DoEvents
Next intNN
Next intN
End Sub




Anzeige
Alles klar, negatives Left geht mit Userform
13.10.2008 15:38:15
Reinhard
Hallo Karin,
du hast Recht.
Ich hatte seinerzeit wohl eine UF o.ä. genommen, damit geht das.

Private Sub CommandButton1_Click()
Dim n, Pause
For n = -300 To 600 Step 3
UserForm1.Left = n
DoEvents
For Pause = 1 To 1000000
Next Pause
Next n
End Sub


Gruß
Reinhard

Anzeige
AW: Kreise zeichnen
13.10.2008 13:07:01
Beverly
Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




Anzeige
AW: Kreise zeichnen
13.10.2008 13:08:00
Beverly
Hi Hanspeter,

Sub kreis()
Dim obKreis As Object
Set obKreis = ActiveSheet.Shapes.AddShape(msoShapeOval, Range("A1"), Range("A2"), Range("A3") _
_
, Range("A3"))
End Sub




Anzeige
;
Anzeige

Infobox / Tutorial

Kreise in Excel zeichnen und bearbeiten


Schritt-für-Schritt-Anleitung

Um einen Kreis in Excel zu zeichnen, kannst Du ein VBA-Makro verwenden. Folge diesen Schritten:

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

  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub ZeichneKreis()
        Dim dblLeft As Double, dblTop As Double, dblDurchmesser As Double
        Dim strName As String
        Dim obj As Shape
    
        dblLeft = Range("A1").Value
        dblTop = Range("A2").Value
        dblDurchmesser = Range("A3").Value
        strName = Range("A4").Value
    
        Set obj = ActiveSheet.Shapes.AddShape(msoShapeOval, dblLeft, dblTop, dblDurchmesser, dblDurchmesser)
        obj.Name = strName
    End Sub
  4. Daten eingeben: Fülle die Zellen A1 (X-Position), A2 (Y-Position), A3 (Durchmesser) und A4 (Name des Kreises) aus.

  5. Führe das Makro aus, indem Du im VBA-Editor F5 drückst oder zurück zu Excel gehst und das Makro über Entwicklertools > Makros auswählst.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden" beim Zugriff auf den Kreis.

    • Lösung: Stelle sicher, dass der Name des Kreises korrekt in Zelle A4 eingegeben wurde.
  • Fehler: Der Kreis wird nicht an der richtigen Position angezeigt.

    • Lösung: Überprüfe die Werte in Zelle A1 und A2. Sie müssen den richtigen X- und Y-Koordinaten entsprechen.

Alternative Methoden

Wenn Du keine VBA benutzen möchtest, kannst Du auch manuell einen Kreis einfügen:

  1. Gehe zu Einfügen > Formen und wähle Oval.
  2. Halte die Shift-Taste gedrückt, um einen perfekten Kreis zu zeichnen.
  3. Ziehe den Kreis auf die gewünschte Größe und Position.

Für PowerPoint gibt es ähnliche Schritte, um Kreise zu zeichnen oder einen Halbkreis zu erstellen.


Praktische Beispiele

  1. Kreis mit bestimmten Durchmesser zeichnen:

    • Verwende den oben genannten VBA-Code und setze in Zelle A3 den gewünschten Durchmesser, z.B. 30 für 30mm.
  2. Große Kreise zeichnen:

    • Setze in A3 einen größeren Wert, um große Kreise zu zeichnen.
  3. Zugriff auf den Kreis:

    • Um auf den Kreis zuzugreifen und seine Eigenschaften zu ändern, kannst du den folgenden Code verwenden:
    Sub ZugriffAufKreis()
        Dim strName As String
        Dim obj As Shape
    
        strName = Range("A4").Value
        Set obj = ActiveSheet.Shapes(strName)
    
        obj.Left = 0 ' Ändert die Position des Kreises
    End Sub

Tipps für Profis

  • Um mehrere Kreise zu zeichnen, kannst Du eine Schleife im VBA-Code verwenden, um die Positionen und Durchmesser aus einer Tabelle auszulesen.
  • Experimentiere mit den Eigenschaften der Shapes, wie .Fill.Color oder .Line.Style, um die Darstellung der Kreise zu verändern.
  • Achte darauf, dass Du die msoShapeOval Konstante verwendest, um sicherzustellen, dass Du einen Kreis zeichnest.

FAQ: Häufige Fragen

1. Wie kann ich einen Halbkreis in Excel zeichnen? Um einen Halbkreis zu zeichnen, kannst Du in Excel keine direkte Form verwenden. Du kannst jedoch einen Oval zeichnen und die untere Hälfte mit der Hintergrundfarbe überdecken.

2. Kann ich Kreise mit VBA in Word oder PowerPoint zeichnen? Ja, die Methoden sind ähnlich. Du kannst VBA verwenden, um Formen in Word und PowerPoint zu erstellen. Nutze Shapes.AddShape msoShapeOval in beiden Anwendungen.

3. Wie kann ich den Durchmesser des Kreises in mm angeben? Excel verwendet Punkte für die Maßeinheit. Um mm in Punkte umzurechnen, multipliziere die mm-Zahl mit 2,83465 (1 mm = 2,83465 Punkte).

4. Gibt es eine Möglichkeit, die Kreise zu animieren? Ja, in PowerPoint kannst Du Animationen für Formen hinzufügen, aber in Excel sind die Möglichkeiten begrenzt. Du kannst jedoch VBA verwenden, um die Position eines Kreises zu ändern und eine einfache Animation zu erstellen.

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