Office: Flächenberechnung des "Shapes" im Excel und Output in Zelle A1

Helfe beim Thema Flächenberechnung des "Shapes" im Excel und Output in Zelle A1 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen Ich würde gerne im Excel ein "Shapes.BuildFreeform" zeichnen. Nachdem dieser gezeichnet ist (.ConvertToShape.Select) soll mir in der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von axtmaestro, 22. März 2012.

  1. Flächenberechnung des "Shapes" im Excel und Output in Zelle A1


    Hallo Zusammen

    Ich würde gerne im Excel ein "Shapes.BuildFreeform" zeichnen. Nachdem dieser gezeichnet ist (.ConvertToShape.Select) soll mir in der Zelle $A$1 seine Fläche z.B. in cm2 angegeben werden. Wird die Grösse bzw. die Form von diesem Shape im Nachgang noch manuell verändert, soll mir seine Fläche ebenfalls aktualisiert werden.
    Die Idee ist, dass ich die Shapes hier im Excel wie Polygone für Flächenzeichnungen nutze.

    Ist es überhaupt möglich Shapes-Flächen im Excel zu berechnen? *rolleyes.gif*
    Hat hier jemand schon Erfahrung sammeln können? *rolleyes.gif*

    Würde mich über jeden Denkansatz sehr freuen.

    LG,
    Robert

    :)
     
    axtmaestro, 22. März 2012
    #1
  2. Hallo Robert,

    anbei ein Beispiel.




    « Gruß Sepp »
     
    josef e, 24. März 2012
    #2
  3. Danke dir Josef für deinen Vorschlag. *Smilie
    Du bist ja echt genial! *wink.gif* Ich wusste gar nicht dass so etwas im Excel überhaupt möglich währe.

    Nach einigen Testen ist mir jedoch aufgefallen, dass wenn ich den Shape von seiner Ursprungsstelle auf dem Tabellenblatt verschiebe, das sich auch seine kalkulierte Fläche in $E$1 verändert wird, obwohl ich die eigentliche Shapefläche gar nicht verändere. Auch wird mir die Fläche oft im negativen angezeigt.

    Wo könnte hier das Problem liegen? *rolleyes.gif*
    Ich muss zugeben, dass ich deinen Code nicht so wirklich verstehe, um es selber beheben zu können.

    Würde mich über einen weiteren Tipp sehr freuen.

    LG,
    Robert

    PS: Kann man den Code auch für ".Type = msoShapeRectangle" verwenden. Habe es mit:


    PHP:
             If .Type msoShapeRectangle Then
    For lngPoints 1 To .Nodes.Count
    Cells
    (lngPoints 11) = lngPoints
    Cells
    (lngPoints 12) = .Nodes.Item(lngPoints).Points(11) / dblFactor
    Cells
    (lngPoints 13) = .Nodes.Item(lngPoints).Points(12) / dblFactor
    Next
    Cells
    (15).FormulaArray "=SUM((C2:C" lngPoints "+C3:C" lngPoints ")*(B2:B" lngPoints "-B3:B" lngPoints ")/2)"
    End If
     
    axtmaestro, 24. März 2012
    #3
  4. Flächenberechnung des "Shapes" im Excel und Output in Zelle A1

    Hallo Robert,

    das mit der Änderung der Fläche beim Verschieben der Form kann ich beim besten willen nicht nachvollziehen.

    Damit der Code auch bei einem Rechteck funktioniert muss man anders vorgehen.

    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************

    Option Explicit

    Sub calculateArea()
    Dim objShp As Shape
    Dim lngPoints As Long
    Dim dblFactor As Double

    dblFactor = Application.CentimetersToPoints(1)

    Set objShp = Me.Shapes(Application.Caller)

    Range("A2:C100") = ""
    Range("E1") = ""
    With objShp
    If .Type = msoFreeform Then
    For lngPoints = 1 To .Nodes.Count
    Cells(lngPoints + 1, 1) = lngPoints
    Cells(lngPoints + 1, 2) = .Nodes.Item(lngPoints).Points(1, 1) / dblFactor
    Cells(lngPoints + 1, 3) = .Nodes.Item(lngPoints).Points(1, 2) / dblFactor
    Next
    ElseIf .Type = msoShapeRectangle Then
    Cells(2, 1) = 1: Cells(2, 2) = .Left / dblFactor: Cells(2, 3) = .Top / dblFactor
    Cells(3, 1) = 2: Cells(3, 2) = (.Left + .Width) / dblFactor: Cells(3, 3) = .Top / dblFactor
    Cells(4, 1) = 3: Cells(4, 2) = (.Left + .Width) / dblFactor: Cells(4, 3) = (.Top + .Height) / dblFactor
    Cells(5, 1) = 4: Cells(5, 2) = .Left / dblFactor: Cells(5, 3) = (.Top + .Height) / dblFactor
    Cells(6, 1) = 5: Cells(6, 2) = .Left / dblFactor: Cells(6, 3) = .Top / dblFactor
    lngPoints = 6
    End If
    End With
    If lngPoints > 0 Then Cells(1, 5).FormulaArray = "=SUM((C2:C" & lngPoints - 1 & "+C3:C" & lngPoints & ")*(B2:B" & lngPoints - 1 & "-B3:B" & lngPoints & ")/2)"
    End Sub





    « Gruß Sepp »
     
    josef e, 24. März 2012
    #4
  5. Danke für den Code. *Smilie
    Werde es gleich mal ausprobieren.

    Frage zu der Flächenveränderung:

    Könntest du mir deinen Code erklären? Ich verstehe es leider nicht.
    Theoretisch müsste doch die Flächenberechnung im Koordinatensystem (was meiner Meinung das Tabellenblatt im Excel auch darstellt) nach Gaußschen Trapezformel erfolgen.

    Im Anhang habe ich eine Excel-Datei zur berechnung der Gaußschen Trapezformel angehängt. Kann man diese Formel in den Code einbauen? *rolleyes.gif*

    Würde mich über deine Hilfe sehr freuen.

    LG,
    Robert
     
    axtmaestro, 24. März 2012
    #5
  6. ... noch eine kleine Anmerkung.

    Bei der Verschiebung des Rechtecks, wird die Fläche nicht verändert.*Smilie
    Es müsste folglich an der Formel von "Shapes.BuildFreeform" liegen, oder???*rolleyes.gif*

    LG,
    Robert
     
    axtmaestro, 24. März 2012
    #6
  7. Hallo Robert,

    genau die Formel aus deiner Datei wird auch in meiner Datei in E1 verwendet, allerdings als Matrixformel.

    Was du mit "Es müsste folglich an der Formel von "Shapes.BuildFreeform" liegen" meinst, erschließt sch mir nicht.

    Anbei noch einmal meine Datei mit verschiedenen Shapes, alle außer dem Rechteck sind FreeForms!
    Egal wohin ich die einzelnen Formen verschiebe, die Fläche bleibt immer gleich.


    « Gruß Sepp »
     
    josef e, 24. März 2012
    #7
  8. Flächenberechnung des "Shapes" im Excel und Output in Zelle A1

    Hallo Josef

    Habe schon einiges selbst probiert, jedoch ohne Erfolg.*frown.gif*

    Frage: Kann es daran liegen, dass die Formel für "Freeform" den Anfangspunkt nicht mitberücksichtigt.

    Bsp.: Wenn ich ein Rechteck erstelle, werden mir 5 x-y-Punkte gezeigt. Wenn ich aber ein "Freeform" von 7 Punkten erstelle, werden mir nur 7 x-y-Punkte gezeigt. D.h. der erste (beginnende) Punkt wird hier nicht mit berücksichtigt.

    Könnte es daran liegen?

    Gruss,
    Robert
     
    axtmaestro, 24. März 2012
    #8
  9. Hallo Robert,

    wahrscheinlich sind bei deiner Form der erste und der letzte Punkt nicht verbunden. Aber warum lädst du eine rar-Datei mit einem Bild hoch anstatt gleich die Tabelle mit der Form? Dann könnte ich halt gleich am Original schauen, wo das problem liegt.




    « Gruß Sepp »
     
    josef e, 24. März 2012
    #9
  10. ... Sorry Josef, habe deine Lösung betr. der Flächenänderung übersehen.

    In meiner letzten Anmerkung, ging ich auf die Flächenberechnung ein. Mich wundert es, dass sich die Fläche bei Eingabe derselben x-y-Koordinaten zwischen meiner und deiner Lösung unterscheiden.

    Gruss,
    Robert
     
    axtmaestro, 24. März 2012
    #10
  11. ... hier die Excel-Dateien mit derselben Fläche.

    Gruss,
    Robert
     
    axtmaestro, 24. März 2012
    #11
  12. Hallo Robert,

    ich verstehe dein Problem nicht! In deiner Datei habe ich nichts gemacht, außer einmal die Form angeklickt. In E1 erscheint die richtige Fläche.




    « Gruß Sepp »
     
    josef e, 24. März 2012
    #12
  13. Flächenberechnung des "Shapes" im Excel und Output in Zelle A1

    Hallo Josef

    Wie kann es denn sein. Habe deinen letzten Anhang geöffnet. Dort steht der richtige Flächenwert von 19,4661069.

    Wenn ich aber auf die Form klicke wird mir der Wert von 21,9064582 angezeigt.*frown.gif*

    Liegt es an irgendeiner Einstellung bei mir oder hängt es mit meinem Excel 2003 zusammen? *rolleyes.gif*

    Gruss,
    Robert
     
    axtmaestro, 24. März 2012
    #13
  14. Hallo Robert,

    leider habe ich xl2003 nicht mehr, deshalb kann ich es nicht testen, ob es an deiner Version liegt. Probier mal folgenden Code.

    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************

    Option Explicit

    Sub calculateArea()
    Dim objShp As Shape
    Dim lngPoints As Long
    Dim dblFactor As Double

    dblFactor = Application.CentimetersToPoints(1)

    Set objShp = Me.Shapes(Application.Caller)

    Range("A2:C100") = ""
    Range("E1") = ""
    With objShp
    If .Type = msoFreeform Then
    For lngPoints = 1 To .Nodes.Count
    Cells(lngPoints + 1, 1) = lngPoints
    Cells(lngPoints + 1, 2) = .Nodes.Item(lngPoints).Points(1, 1) / dblFactor
    Cells(lngPoints + 1, 3) = .Nodes.Item(lngPoints).Points(1, 2) / dblFactor
    Next
    If Cells(lngPoints, 2) <> Cells(2, 2) And Cells(lngPoints, 3) <> Cells(2, 3) Then
    lngPoints = lngPoints + 1
    Cells(lngPoints, 1) = lngPoints - 1
    Cells(lngPoints, 2) = Cells(2, 2)
    Cells(lngPoints, 3) = Cells(2, 3)
    End If
    ElseIf .Type = msoShapeRectangle Then
    Cells(2, 1) = 1: Cells(2, 2) = .Left / dblFactor: Cells(2, 3) = .Top / dblFactor
    Cells(3, 1) = 2: Cells(3, 2) = (.Left + .Width) / dblFactor: Cells(3, 3) = .Top / dblFactor
    Cells(4, 1) = 3: Cells(4, 2) = (.Left + .Width) / dblFactor: Cells(4, 3) = (.Top + .Height) / dblFactor
    Cells(5, 1) = 4: Cells(5, 2) = .Left / dblFactor: Cells(5, 3) = (.Top + .Height) / dblFactor
    Cells(6, 1) = 5: Cells(6, 2) = .Left / dblFactor: Cells(6, 3) = .Top / dblFactor
    lngPoints = 6
    End If
    End With
    If lngPoints > 0 Then Cells(1, 5).FormulaArray = "=SUM((C2:C" & lngPoints - 1 & "+C3:C" & lngPoints & ")*(B2:B" & lngPoints - 1 & "-B3:B" & lngPoints & ")/2)"
    End Sub





    « Gruß Sepp »
     
    josef e, 24. März 2012
    #14
  15. Vielen, vielen Dank jetzt funktioniert es.
    Du bis ja echt genial. *Smilie *Smilie *Smilie

    Ich würde gerne diesen Code zur Flächenberechnung von Grundstücken verwenden. Dazu gibt es bei mir 4 Flächenarten, die sowohl mit "Freeform" als auch mit "Rectangle" gezeichnet werden sollten.

    Ich habe mir überlegt, ob es evtl. möglich währe, mit Klick auf den Button "Neuen Shape" zuerst eine Userform zu öffnen und in der Combobox meine Flächenart, die ich zeichnen möchte zu bestimmen (die dann als Name der Fläche gilt) und anschliessend die Zeichnung meiner Form auszuführen (ohne auf das Menü "Autoformen/Linien/Freihandform" gehen zu müssen) . Nach der Zeichnung soll mir der Fläche der Form in der dafür vorgesehene Zelle automatisch übernommen werden.

    Habe meinen Gedankengang in der anbei liegenden Excel-Datei skizziert.
    Meinst du es könnte so klappen? *rolleyes.gif*

    LG,
    Robert
     
    axtmaestro, 24. März 2012
    #15
Thema:

Flächenberechnung des "Shapes" im Excel und Output in Zelle A1

Die Seite wird geladen...
  1. Flächenberechnung des "Shapes" im Excel und Output in Zelle A1 - Similar Threads - Flächenberechnung Shapes Excel

  2. Shapes löschen

    in Microsoft Excel Hilfe
    Shapes löschen: Hallo ihr wissende!! Ich brauche schon wieder eure Hilfe. Wie kann ich ein shape mit einem Button löschen? Der Button ist in der Tabelle positioniert. Diesen Code habe ich bereits drinnen aber es...
  3. VBA Shapes Type ändern/zuweisen

    in Microsoft Excel Hilfe
    VBA Shapes Type ändern/zuweisen: Hallo ForumsFreunde, ich habe einen Code teils selbst/teils gefunden zusammengebastellt zur TextSuche in Shapes (Textfeldern) und es läuft bis auf einige Male gut, danach wenn ich ein neues Shape...
  4. Shapes aus bestimmten Bereich löschen

    in Microsoft Excel Hilfe
    Shapes aus bestimmten Bereich löschen: Hallo zusammen, ich brauche etwas Hilfe *Smilie Ich habe ein kleines Makro, welches mir zuvor kopierte Zellen samt Textinhalt, Rahmen und Shapes (kleine Punkte) mit Klick auf einen Button aus...
  5. Replace a shape in a SmartArt graphic

    in Microsoft Excel Tutorials
    Replace a shape in a SmartArt graphic: Replace a shape in a SmartArt graphic Excel 2007 Word 2007 Outlook 2007 PowerPoint 2007 Mehr... Weniger...
  6. Userform shapes ansprechen

    in Microsoft Excel Hilfe
    Userform shapes ansprechen: Hallo, das ist mal wieder zu tricky für mich. Mit folgendem Code wird die CheckBox1 nicht angezeigt, wenn in der Zelle D6 das Wort "Schießen:" fehlt. Wenn das Steuerelement "CheckBox1" in die...
  7. Schwierige Flächenberechnung mit Excel möglich?

    in Microsoft Excel Hilfe
    Schwierige Flächenberechnung mit Excel möglich?: Servus aus Bayern erstmal, Ich habe eine Frage zum Thema Flächenberechnung bei Excel. Das ganze ist gar nicht so einfach und die frage ob das ganze überhaupt möglich ist stelt sich nach Wochen des...
  8. Flächenberechnung möglich?

    in Microsoft Excel Hilfe
    Flächenberechnung möglich?: Hallo! Habe mich gefragt, ob man mit Excel die Fläche unter einer Kurve in einem Diagramm mit einer bestimmten Funktion ausrechnen lassen kann? Geht das? Vielen Dank. tobbes
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden