Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

shape per VBA immer in der Mitte einfügen

Forumthread: shape per VBA immer in der Mitte einfügen

shape per VBA immer in der Mitte einfügen
08.10.2007 20:28:13
Alex
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

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: shape per VBA immer in der Mitte einfügen
08.10.2007 21:02:54
Daniel
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

Anzeige
AW: shape per VBA immer in der Mitte einfügen
09.10.2007 09:30:00
alex
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

Anzeige
AW: shape per VBA immer in der Mitte einfügen
09.10.2007 09:31:00
alex
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

Anzeige
AW: shape per VBA immer in der Mitte einfügen
09.10.2007 09:58:49
ChrisL
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

Anzeige
AW: shape per VBA immer in der Mitte einfügen
09.10.2007 12:13:50
alex
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
;
Anzeige

Infobox / Tutorial

Shape in der Bildschirmmitte mit VBA einfügen


Schritt-für-Schritt-Anleitung

Um ein Shape in der Mitte des aktiven Excel-Fensters mit VBA einzufügen, gehe wie folgt vor:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub ShapeInMitteEinfügen()
       Dim ws As Worksheet
       Set ws = ActiveSheet
    
       ' Erzeuge ein neues Shape
       Dim meinShape As Shape
       Set meinShape = ws.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 50) ' ein Rechteck von 100x50
    
       ' Berechne die Position für die Mitte
       With ActiveWindow.VisibleRange
           meinShape.Left = .Left + (.Width - meinShape.Width) / 2
           meinShape.Top = .Top + (.Height - meinShape.Height) / 2
       End With
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen. Das Shape sollte nun in der Mitte des sichtbaren Bereichs erscheinen.


Häufige Fehler und Lösungen

  • Fehler: Shape wird nicht in der Mitte angezeigt
    Stelle sicher, dass du die VisibleRange-Eigenschaften korrekt verwendest. Wenn du das Shape in der Mitte des Bildschirms, nicht nur des sichtbaren Bereichs, platzieren möchtest, musst du die Bildschirmposition berücksichtigen.

  • Fehler: Shape wird nicht kopiert
    Achte darauf, dass der Name des Shapes im Code korrekt ist. Überprüfe auch, ob die Ziel-Tabelle aktiviert ist, bevor du versuchst, das Shape einzufügen.


Alternative Methoden

Wenn du ein Shape nicht nur in der Mitte des sichtbaren Bereichs, sondern auch in der Bildschirmmitte positionieren möchtest, kannst du die Bildschirmkoordinaten ermitteln. Das erfordert jedoch komplexere Berechnungen. Ein einfacherer Ansatz ist, das Shape nur in die Mitte des Excel-Fensters zu platzieren, wie im obigen Code gezeigt.


Praktische Beispiele

Hier sind einige Beispiele, wie du Shapes in verschiedenen Positionen einfügen kannst:

  1. Shape in der linken oberen Ecke:

    Sub ShapeInObenLinksEinfügen()
       Dim ws As Worksheet
       Set ws = ActiveSheet
       Dim meinShape As Shape
       Set meinShape = ws.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 50)
    End Sub
  2. Shape in der Bildschirmmitte:

    Sub ShapeInBildschirmMittenEinfügen()
       Dim meinShape As Shape
       Set meinShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 50)
       meinShape.Left = Application.Width / 2 - meinShape.Width / 2
       meinShape.Top = Application.Height / 2 - meinShape.Height / 2
    End Sub

Tipps für Profis

  • Nutze die vba graphics-Funktionen, um die Darstellung deiner Shapes weiter zu verbessern. Mit Shape.Fill und Shape.Line kannst du Farben und Linien anpassen.
  • Verwende vba textframe, um Text in Shapes einzufügen. Das kann nützlich sein, um Informationen direkt im Shape anzuzeigen.
  • Denke daran, dass ActiveWindow.VisibleRange nur den sichtbaren Bereich des aktuellen Fensters berücksichtigt. Wenn du verschiedene Fenster hast, musst du die Positionen entsprechend anpassen.

FAQ: Häufige Fragen

1. Wie kann ich ein Shape in eine andere Tabelle kopieren?
Verwende den Befehl .Copy gefolgt von .Paste auf der Ziel-Tabelle. Siehe auch das Beispiel von ChrisL.

2. Kann ich die Position des Shapes dynamisch aktualisieren, wenn ich scrollen?
Ja, du musst ein Event-gesteuertes Makro erstellen, das die Position des Shapes bei SelectionChange aktualisiert. Hierbei musst du jedoch sicherstellen, dass das Shape immer wieder neu positioniert wird.

3. Welche Excel-Version benötige ich für diese VBA-Funktionen?
Die obigen VBA-Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige