Microsoft Excel

Herbers Excel/VBA-Archiv

Vordergrung Hintergrund

Betrifft: Vordergrung Hintergrund von: stef26
Geschrieben am: 09.08.2014 11:16:54

Hallo nochmal,
hab noch ein zweites Thema, das mich zur Verzweiflung bringt.

Habe mir ein Macro gebastelt, welches mir Verbinder (an Rohren) in den Vordergrund bringen soll.
Stellt man sich z.B. ein Regal auf Rollen vor, so sollen die Verbinder der vordern Stangen in den Vordergrund gelegt werden.

Habe mir auch schon was gebastelt. Komisch daran ist, dass er einige Verbinder in den Vordergrund legt andere nicht. Lässt man das Macro nochmal laufen, so sind es ander Verbinder, die er in den Vordergrund legt ???

Anbei mal ein Beispiel:
https://www.herber.de/bbs/user/91988.xlsm

Ich weis, dass man mit Grafiken in Excel eigentlich nicht arbeitet, aber hinter dem Tool wird aus einer Skizze dann etliche Berechnungen laufen (die Gott sei dank auch schon laufen). Nur die Optik möchte ich noch etwas verbessern.

Vielleicht kann sich das ja mal wer anschauen, der ein bisschen mehr Ahnung von VBA hat wie ich... (ich lerne von Tag zu Tag dazu :-))

Liebe Grüße
Stefan

  

Betrifft: Für kaum Kenntnisse ist das aber doch recht ... von: Luc:-?
Geschrieben am: 09.08.2014 16:26:39

…anspruchsvoll, Stefan;
und ziemlich umfangreich, auch, wenn man dann das betreffende Pgm gefunden hat. Das wird viele abschrecken. Deshalb nur soviel: Ab Xl12 reagieren ZeichenObjektGruppen mitunter etwas merkwürdig auf HG/VG-Befehle, deshalb müssen derartige Aktionen genau durchdacht wdn und am besten schon auf einer (inneren) Ordnung der Gruppenmitglieder aufbauen. Ein eigener Name ist ebenfalls sinnvoll, den du wohl auch vergeben hast, wobei im Prinzip je einer für jede Gruppe reicht (die Gruppenmitglieder wdn ohnehin mit Indizes angesprochen → eigener Name dann nur bei öfteren GruppierungsAufhebungen und NamensVgln erforderlich).
Wenn bestimmte Objekte stets gemeinsam im VG liegen sollen, ist es auch zweckmäßig diese separat zu gruppieren und nicht noch in andere Gruppen einzubinden. Dann braucht man eigentlich auch kein Pgm dafür, denn das müsste erst mal von EinzelObjekten ausgehen, diese dann in eine VG/HG-Reihenfolge bringen und schließlich sinnvoll gruppieren. Dabei kann je nach Pgm immer wieder etwas Anderes durcheinanderkommen, weil Xl „mitdenkt“ und bei ZO-Änderung an einem Objekt gleich die ZO aller anderen mitkorrigiert. Also muss das in einer bestimmten Reihenfolge geschehen, die du dir erarbeiten musst, denn ich habe schon lange nicht mehr so etwas gemacht und vermutlich die meisten Anderen, die davon Ahnung haben, auch nicht.
Gruß, Luc :-?


  

Betrifft: AW: Danke für deine Antwort !!! von: stef26
Geschrieben am: 09.08.2014 21:13:36

Hallo Luc,
danke für deine Hilfe. Umfangreich ist das nur, weil ich mir das Ganze aus verschiedenen Beiträgen zusammengeflickt habe. Vermutlich geht das viel einfacher (wenn man VBA kann).
Aber was ich überhaupt aus deiner Antwort verstehe, ist dass das gar nicht so einfach ist.
Was du mit Reihenfolge gemeint hast ist mir nicht ganz klar. Eigentlich wollte ich das nicht um eine Ebene verschieben, sondern komplett in die oberste Ebene also komplett in den Vordergrund bringen.
Vielleicht liegt ja da mein Problem ?

Liebe Grüße
Stefan


  

Betrifft: AW: Vordergrung Hintergrund von: EtoPHG
Geschrieben am: 09.08.2014 16:46:41

Hallo Stefan,

Du machst dir die Aufgabe unnötig kompliziert, indem du versuchst einzelne Grafikelemente umzuordnen. Grafik Elemente haben eine Eigenschaft .ZOrderPosition und mit der Methode .ZOrder lässt sich diese beieinflussen. Es gibt soviele Positione, wie Shapes in deinem Blatt. Mit weit über 100 Shapes verlierst du das komplett die Kontrolle, wenn du die Position nur mit msoBringToFront arbeitest.

Überleg dir wieviele Ebenen deine 3D Zeichnung hat/haben soll. Dann fast du alle Shapes der jeweiligen Ebene zu einger Gruppe zusammen. Jetzt musst du nur noch die einzelnen (vielleicht 3-5 Ebenenen) richtig verschieben, indem du mit der hintersten anfängst, sie in den Vordergrund bringst und dich bis zur ersten (vordersten) vorarbeitest.

P.S. Sich in deinem Code zurechzufinden ist etwa wie das Labyrinth des Minotauros zu erforschen.

Gruess Hansueli


  

Betrifft: AW: Vordergrung Hintergrund von: stef26
Geschrieben am: 09.08.2014 21:03:23

Hallo,
danke für deine hilfreiche Antwort.
Da ich wenig Ahnung von VBA habe (hab mir alles aus verschiedenste Beiträge versucht zusammen zu basteln. (was eist nicht wirklich zu 100% funktioniert)
So wie ich dich verstanden habe, versuche ich mit den Code immer eine Ebene in Front zu bringen?
Eigentlich wollte ich die gefundenen Shapes ganz in die oberste Ebene also ganz nach vorne bringen.
Gibt es dafür evtl. einen Code?

Liebe Grüße
Stefan


  

Betrifft: AW: Vordergrung Hintergrund von: EtoPHG
Geschrieben am: 09.08.2014 23:12:57

allo Stefan,

Interessanterweise hat Luc ja den genau gleichen Vorschlag, wie ich gemacht. Ich muss zugeben, dass ich vergessen habe, vor dem Absenden der Antwort den Thread zu aktualisieren, sonst wäre meine Antwort entweder ausgeblieben (da gleich wie Luc's) oder ev. so ausgefallen wie jetzt. Und da das Rumspielen/Zurechtfinden mit deiner Datei etwas dauerte, lag zwischen Luc's und meiner Antwort doch eine geraume Zeit (und etwas Gartenarbeit ;-)

Ich habe mal ein bisschen aufgeräumt (leere Module gelöscht, Code der zu Fehlern führt auskommentiert).
Grundsätzlich solltes du nie auf

Option Explicit
als erste Codezeile in jedem Modul verzichten. Das hilft dir Fehler von nicht definierten Variablen früher aufzudecken, weil der Code dann erst mal gar nicht anläuft!

In der (rudimentär) bereinigten Datei
https://www.herber.de/bbs/user/91994.xlsm
habe ich folgendes gemacht:
a) alle von dir erwähnten Verbinder zu einer Gruppe mit Namen "GrpVBVorne" zusammengefasst und
b) deine SUB VorneHinten so umgebaut, dass nur noch diese Gruppe verschoben wird und zwar
c) in einem Flip/Flop Verfahren.
Du siehst an dem Beispiel, wie einfach der Code wird, wenn du dich ein nach Luc's (und meinem zu späten ;-) Vorschlag orientierst.

Gruess Hansueli


  

Betrifft: AW: Vordergrung Hintergrund von: stef26
Geschrieben am: 10.08.2014 01:32:56

Guten Abend (Nacht)
zuerst muss ich mich mal ganz herzlich bei dir bedanken. Wie lange ihr hier im Forum Rede und Antwort steht ist absolute klasse.
Was ich vergessen hab zu sagen ist, dass ich die zur Verfügung gestellte XLS natürlich nur ein kleiner Ausschnitt des Orginals war. Hier hab ich einfach versucht alles mögliche zu löschen um auf die 300kb zu kommen, die man runter laden darf. Deshalb auch so viele leere Macros und so.
Das mit Option Explicit wusste ich gar nicht, was das ist. Werde aber versuchen deinen Rat zu folgen.

Das mit dem Flip Flop wie auch immer du das gemacht hast funktioniert super.
Wie der Code arbeitet ist mir völlig unklar.???
Mein Problem ist, dass du vermutlich die Verbinder alle manuell markiert hast, um diese zu Gruppieren.
Das ist ein Problem, da der Anwender des Tools Skizzenartig was zeichnen (Bilder reinziehen) kann. D.h. ich weiß nicht wie viele Verbinder an den beiden vorderen Rohren sind, deshalb hab ich über die Position der Verbinder versucht diese zu erfassen. Problem die Verbinder lassen sich teilweise nicht manuell markieren, da irgend ein anders Bild drüber liegt. Deshalb wollte ich mit einem Button (Macro) versuchen alle Verbinder die auf den Rohren Positioniert sind in den Vordergrund zu legen.
D.h. manuell gruppieren wird nicht funktionieren.
Gibt es ne Möglichkeit diese über ein Macro zu Gruppieren, dann wäre das mit der FlipFlop meine Lösung.

Liebe Grüße und eine Gute Nacht
Stefan
P.S. hab zufällig auch schon einen Beitrag zu gruppieren im Forum, vielleicht kann man ja da was nützliches rausziehen.


  

Betrifft: Danke an Alle !!! von: stef26
Geschrieben am: 15.08.2014 17:27:12

Die Karin hat mir gezeigt, wie ich meine Shapes eindeutig benennen kann.
Somit tritt dann dieses Problem nicht mehr auf


Danke an alle die mir geholfen haben

Liebe Grüße
Stefan


 

Beiträge aus den Excel-Beispielen zum Thema "Vordergrung Hintergrund"