Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Quadrat breite höhe tiefe einstellen

Quadrat breite höhe tiefe einstellen
22.06.2014 12:42:17
stef26

Hallo Zusammen,
ich habe nochmal ein Problem, bei dem ich etwas Hilfe benötigen könnte.
Es gibt 3 Eingabefelder:
Breite
Höhe
Tiefe (1/2 wegen Perspektive)
Ich wollte lediglich ein Quadrat erzeugen mit diesen Größen.
(Was dann in meiner Anwendung eine Materialkiste darstellen soll)
Dazu habe ich mir ein Shape (Würfel) genommen und wollte dies entsprechend einstellen. Hat aber leider nicht funktioniert wie ich mir das gedacht hatte.
Nun hab ich versucht das Quadrat in mehreren Shapes zu zerteilen, was die Sache langsam kompliziert gemacht hat. Was mich letztendlich zum scheitern gebracht hat.
Eigentlich wollte ich nur ein Quadrat mit den Größen erzeugen die man eingibt.
Mach ich das ganze zu kompliziert, oder gibt es vielleicht einen simplen Trick auf den ich nicht komme. Bin für jede Hilfe/Tipps dankbar...
Hab mal ein kleines Beispiel reingeladen
https://www.herber.de/bbs/user/91216.xlsm
Vielleicht hat von euch ja schon mal einer etwas ähnliches gemacht ?
Liebe Grüße
Stefan

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

Betreff
Datum
Anwender
Anzeige
AW: Quadrat breite höhe tiefe einstellen
22.06.2014 13:41:36
ChristianM
hallo Stefan,
schau dir mal in der VBA-Hilfe die "Shapes.AddShape-Methode" an.
mit den Parametern "Left", "Top", "Height" und "Width" kannst du die Position und Größe des Shapes bestimmen.
Zentimeter musst du dabei ggf. in Points umrechnen - siehe "Application.CentimetersToPoints".
Des Weiteren kann man wie in deinem Fall beim Shape-Type "msoShapeCube" das Verhaltnis von Breite/Höhe zur Tiefe über die "Adjustments" festlegen. Dies ergibt sich dann aber mittels einfachen Rechenoperationen.
Gruß
ChristianM

AW: Quadrat breite höhe tiefe einstellen
22.06.2014 14:13:15
stef26
Hallo Christian,
danke für deine Hinweise. Das mit Top, Left usw. ist mir bekannt.
Hier hab ich schon mal für eine andere Anwendung mal die Größe eingestellt.
Das Problem ist wenn ich die Höhe einstellen will verändert er mir automatisch die Tiefe mit,
was mich schier zur Verzweiflung bringt.
Gibt es vielleicht eine einfachere Lösung die für Anfänger wie mich auch realisierbar sind ?
Gruß
Stefan

Anzeige
AW: Quadrat breite höhe tiefe einstellen
22.06.2014 14:55:50
Daniel
HI
da kenne ich jetzt keine einfache Funktion
die Höhe und Breite des Shapes beziehen sich ja immer auf projzierte 2 dimendionale Fläche.
dh du musst Breite und Höhe des Shapes aus Breite, Höhe und Tiefe deiner 3D-Form berechnen.
das sollte nach folgenden Formeln funktionieren:
ShapeBreite = Breite + Tiefe * 0,707
ShapeHöhe = Höhe + Tiefe * 0,707
der dritte Parameter den du benötigst, ist das Adjustment:
.ShapeRange.Adjustments.Item(1)
dieser kann einen Wert zwischen 1 und 0 annehmen.
wie du diesen aber berechnest, weiß ich auch nicht da musst du mal ein bisschen rumspielen und ausprobieren, bei welchem Wert der Würfel wie ein Würfel aussieht und wie man diesen Wert aus Höhe, Breite und Tiefe berechnet.
Gruß Daniel

Anzeige
AW: Quadrat breite höhe tiefe einstellen
22.06.2014 15:21:14
stef26
Hallo Daniel,
danke für deine Info.
Das ist gerade mein Problem.
Wenn ich .ShapeRange.Adjustments.Item(1) einstellen möchte, verändert sich ja
die Shape Breite und Höhe wieder.
Ich glaub mit diesen Weg komme ich zu keiner Lösung.
Falls jemand noch ne Idee hat wie man das vielleicht berechnen kann,
oder auf eine andere Art darstellen kann, dann wäre das super
Viele liebe Grüße
Stefan

AW: Quadrat breite höhe tiefe einstellen
22.06.2014 15:34:12
Daniel
hi
nein, die Shapebreite und -höhe verändert sich nicht, wenn du das Adjustment änderst!
Gruß Daniel

AW: Quadrat breite höhe tiefe einstellen
22.06.2014 15:44:45
stef26
wo du recht hast hast du recht.
Aber die Tiefe verändert sich !
Ich glaub ich muss das Thema wohl abschreiben...
Gruß
Stefan

Anzeige
AW: Quadrat breite höhe tiefe einstellen
22.06.2014 18:18:07
ChristianM
Hallo Stefan,
betrachte das Shape als "flaches" Objekt, egal ob hier ein Fläche oder wie in deinem Fall ein Körper perspektivisch dargestellt wird. Startpunkt ist immer "Top" und "Left". Die Größe wird durch "Height" und "Width" festgelegt.
Ausgehend vom Punkt "Top - Left" wird mit .Adjustments.Item(1) die Tiefe des Quaders als Anteil der Shape-Höhe bestimmt.
Bsp: .Adjustments.Item(1) = 0.25 heißt, dass die Tiefe des Quaders 25% der Shape-Höhe einnimmt.
Das heißt:
  • Bei gleicher Shape-Höhe wird mit wachsender Tiefe die Frontfläche kleiner.

  • Bei gleicher Größe der Frontfläche wird mit wachsender Tiefe das Shape größer.

  • Wie schon genannt kannst du das mit einfachen Operationen berechnen.
    Gruß
    ChristianM

    Anzeige
    nochmalige Hilfe benötigt
    22.06.2014 21:37:13
    stef26
    Hallo nochmal,
    mir fehlt noch ein wenig Verständnis für die Berechnung des Würfels.
    Hab dazu (siehe download) eine kleine Testreihe gemacht um auf die Lösung zur Berechnung
    zu kommen. Leider stehe ich vermutlich auf dem Schlauch...
    https://www.herber.de/bbs/user/91220.xlsm
    So wie es aussieht wird der Würfel über die Diagonale berechnet.
    Das Verhältnis
    Selection.ShapeRange.Adjustments.Item(1)
    ist mir leider immer noch nicht klar.
    Vielleicht kann mir ja nochmal jemand kurz helfen, da ich langsam aber sicher am
    verzweifeln bin...
    Danke
    Stefan

    Anzeige
    AW: nochmalige Hilfe benötigt
    23.06.2014 11:33:33
    Rudi Maintaire
    Hallo,
    in Tabelle1!B2:B4 die Maße der Kiste (z.B. B=100/ T=100/ H=100)
    Sub Kiste()
    Dim b As Double, h As Double, t As Double
    Dim shp As Shape
    With Worksheets("Tabelle1")
    Set shp = .Shapes("Würfel 9")
    b = .Range("B2")
    t = ((.Range("B3") / 2) ^ 2 / 2) ^ 0.5
    h = .Range("B4")
    End With
    With shp
    .Left = 300
    .Top = 50
    .Height = h + t
    .Width = b + t
    .Adjustments.Item(1) = t / .Height
    End With
    End Sub
    

    Gruß
    Rudi

    Korrektur
    23.06.2014 11:52:44
    Rudi Maintaire
    Hallo,
    kleiner Fehler.
      With shp
    .Left = 300
    .Top = 50
    .Height = h + t
    .Width = b + t
    .Adjustments.Item(1) = t / Application.Min(.Height, .Width)
    End With
    

    Gruß
    Rudi

    Anzeige
    AW: Korrektur
    23.06.2014 13:55:39
    Stef26
    Dankeschön Rudi,
    ich war schon ganz verzweifelt...
    DANKE DANKE
    :-)
    Stefan

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige