Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

shape per VBA immer in der Mitte einfügen

Betrifft: shape per VBA immer in der Mitte einfügen von: Alex
Geschrieben am: 08.10.2007 20:28:13

Guten Abend liebe Excelfreunde!

Ich schlage mich da mit einem Problem herum, wo ich einen Rat von euch benötige! Ich füge über per VBA geladene benutzerdefinierte Symbolleisten Shapes ein. Wie kann ich Excel dazu veranlassen, diese Shapes immer in der Bildschirmmitte einzufügen. Das herkömmlich Einfügen stellt kein Problem dar, lediglich wenn das dargestellte Tabellenblatt über die Bildlaufleisten verschoben wird, wird das eingefügt Objekt sonst nicht mehr wahrgenommen.

Danke für eure Tipps.

lg alex

  

Betrifft: AW: shape per VBA immer in der Mitte einfügen von: Daniel
Geschrieben am: 08.10.2007 21:02:54

Hi
ein Shape in der Bildschirmmitte des Monitors einzufügen wird sehr aufwendig, da sich das Bezugsssystem für die Shape-Koordinaten das Excelfenster ist, d.h. der Punkt (0 / 0) ist immer linke obere Ecke der Zelle A1.
Um jetzt den Shape in der Bildschirmmitte zu positioneren, müsstest du erst die Bildschirmposition der Applikation, die Postiion des Aktiven Fensters innerhalb der Applikation sowie den Scrollzustand des Aktiven Fensters ermitteln, um daraus irgendwie die Koordinaten der Bildschirmmitte zu bekommen.

Wesentlich einfacher sieht die Sache aus, wenn du deine Anforderung auf "in die Mitte des aktiven Excel-Fensters" beschränkst.
du kannst mit den Funktionen:

ActiveWindow.VisibleRange.top
ActiveWindow.VisibleRange.left


die Koordinaten der Linken oberen Ecke des sichtbaren bereiches abfragen, und mit

ActiveWindow.VisibleRange.Width
ActiveWindow.VisibleRange.Height


die Höhe und die Breite des sichtbaren Bereichs abfragen.
damit solltest du in der Lage sein, die erforderlichen Koordinaten zu berechnen, um dein Shape in der Mitte des sichtbaren Bereichs zu plazieren.
(Berechnungsformel für die X-Position wäre:

Links sichtbarer Bereich + (Breite sichtbarerer Bereich  - Breite Shape) /2


die Höhe dann ähnlich.

Allerdings gilt das dann nur für den aktuellen Scrollzustand.
Wenn du jetzt im Tabellenblatt herumscrollst, verschiebt sich natürlich auch das Shape, weil das Bezugssysstem ja die Zellen sind
Soll das Shape wie eine Symbolleiste oder eine Userform immer sichtbar bleiben, müsstest du ein Eventgesteuertes Makro schreiben, das das Shape immer wieder neu positioniert.
Da meines Wissen nach für das Scrollen noch kein Event gibt, musst du hier wahrscheinlich auf SelectionChange zurürckgreifen.


Gruß, Daniel


  

Betrifft: AW: shape per VBA immer in der Mitte einfügen von: alex
Geschrieben am: 09.10.2007 09:30:52

Hallo Daniel!

Mir würde reichen das Shape in der jeweils linken oberen Ecke einzufügen (auch nach dem Scrollvorgang) ich habe da zwar einiges in der Recherche gefunden komme damit aber nicht ganz klar.

Ich möchte lediglich über einen Commandbutton das Shape von Tabelle 1 nach Tabelle 2 kopieren - in der oben beschriebenen Form!

lg alex


  

Betrifft: AW: shape per VBA immer in der Mitte einfügen von: alex
Geschrieben am: 09.10.2007 09:31:00

Hallo Daniel!

Mir würde reichen das Shape in der jeweils linken oberen Ecke einzufügen (auch nach dem Scrollvorgang) ich habe da zwar einiges in der Recherche gefunden komme damit aber nicht ganz klar.

Ich möchte lediglich über einen Commandbutton das Shape von Tabelle 1 nach Tabelle 2 kopieren - in der oben beschriebenen Form!

lg alex


  

Betrifft: AW: shape per VBA immer in der Mitte einfügen von: ChrisL
Geschrieben am: 09.10.2007 09:58:49

Hallo alex

Etwas zum starten...

Sub Macro1()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim obDeinShape As Object

Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Set obDeinShape = WS1.Shapes("Rectangle 1")

obDeinShape.Copy
WS2.Select
ActiveWindow.VisibleRange.Select
WS2.Paste
End Sub



Gruss
Chris


  

Betrifft: AW: shape per VBA immer in der Mitte einfügen von: alex
Geschrieben am: 09.10.2007 12:13:50

Hallo Chris!

Mit dem bin ich schon hoch zufrieden - mehr muss es gar nicht sein. Vielen lieben Dank. Wusste, dass hier im Forum auf die Leute verlass ist.

schönen Tag noch

lg alex