Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kreis - Rechteck dynamisch

Kreis - Rechteck dynamisch
24.06.2020 08:21:58
Tobias
Hallo zusammen,
Auf einem Excel-Tabellenblatt habe ich einen Kreis gezeichnet. Dieser Kreis / Reckeck soll abhängig von einem gewissen Durchmesser / Höhe / Breit Wert in einer Zelle seine Größe ändern, jedoch darf er dabei nicht seine Position (bzw. den Mittelpunkt) auf dem Tabellenblatt nicht ändern.
Kann mir vielleicht jemand einen Tipp geben wie ich das hinbekomme?
Mit freundlichen Grüßen
Tobias

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kreis - Rechteck dynamisch
24.06.2020 09:22:30
MCO
Hallo Tobias!
Deine Figuren haben alle Breite und Höhe als Eigenschaft. Damit kannst du den Mittelpunkt bestimmen (jeweils geteilt durch 2) indem du die Position der Figur + Abmessungen nimmst.
Alte Mitte mit neuen Abmessungen = neue Position
Als code sieht das dann so aus:
Sub Größe_andern_Kreis()
With ActiveSheet.Shapes.Range(Array("Oval 2"))
Mitte_vert = .Top + .Height / 2
Mitte_hori = .Left + .Width / 2
.Height = Application.CentimetersToPoints(Range("B5"))
.Width = .Height
.Top = Mitte_vert - .Height / 2
.Left = Mitte_hori - .Width / 2
End With
End Sub

Sub Größe_andern_Rechteck()
With ActiveSheet.Shapes.Range(Array("Rectangle 5"))
Mitte_vert = .Top + .Height / 2
Mitte_hori = .Left + .Width / 2
.Height = Application.CentimetersToPoints(Range("K5"))
.Width = Application.CentimetersToPoints(Range("K6"))
.Top = Mitte_vert - .Height / 2
.Left = Mitte_hori - .Width / 2
End With
End Sub
In Tabelle1 gehört noch dieser Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "" Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
Set Eingabe_kreis = Application.Intersect(Target, Range("B5"))
Set Eingabe_Ø = Application.Intersect(Target, Range("K5:K6"))
If Not Eingabe_kreis Is Nothing Then Größe_andern_Kreis
If Not Eingabe_Ø Is Nothing Then Größe_andern_Rechteck
End Sub
https://www.herber.de/bbs/user/138514.xlsm
Gruß, MCO
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige