Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Positionieren von shapes

Forumthread: Positionieren von shapes

Positionieren von shapes
25.06.2003 09:41:10
reinhold
Hi,

ich möchte ein selbsgestaltetes Zeichnungsobjekt immer auf der Mitte des sichtbaren Bildschirms positionieren unabhängig davon, wohin das Tabellenblatt gescrollt worden ist.

Ein- und ausblenden ist kein Problem aber
Selection.ShapeRange.Top = 200
Selection.ShapeRange.Left = 300
liefert die Position nicht unabhängig von der Scrollposition des Tabellenblattes.

Wer kennt eine Lösung?

Gruß Reinhold

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Positionieren von shapes
25.06.2003 09:45:00
L.Vira

Da das Scrollen einer Tabelle kein auswertbares Ereignis auslöst,
ist dein Vorhaben so nicht zu machen.

Re: Positionieren von shapes
25.06.2003 10:18:40
reinhold

Gibt es denn evtl. andere Objekte, die sich so positionieren lassen? Z.B. ist die Position von Symbolleisten (hier aber nicht geeignet) auf dem Tabellenblatt unabhängig vom derzeit angezeigten Bereich.
Gruß
Reinhold

Anzeige
Re: Positionieren von shapes
25.06.2003 10:28:53
L.Vira

Wenn du meinst, anhängig vom Scrollbereich, dann ginge wirklich nur eine Symbolleiste, weil wie schon geschrieben, das Scrollen kein Ereignis auslöst.

Re: Positionieren von shapes
25.06.2003 11:03:30
reinhold

Könnte ich die linke obere Ecke des derzeit angezeigten Bildschirmausschnitts im Makro ermitteln und das shape relativ dazu positionieren?
Das hätte zwar zur Folge, dass sich durch Scrollen die Position verändert, aber beim Einblenden des shapes wäre die Position erst einmal richtig.
Gruß
Reinhold

Anzeige
Re: Positionieren von shapes
25.06.2003 11:13:40
L.Vira

So kannst du die Position der oberen linken Zelle im sichtbaren Bereich ermitteln:

Sub Oben_Links()
Dim L As Single, T As Single
L = ActiveWindow.Panes(1).VisibleRange.Cells(1, 1).Left
T = ActiveWindow.Panes(1).VisibleRange.Cells(1, 1).Top
MsgBox "Links: " & L & " Top: " & T
End Sub

Anzeige
Re: Positionieren von shapes
25.06.2003 11:22:05
reinhold

S U P E R !!!
So komme ich klar!. Ich hoffe, ich habe nicht zu sehr genervt.
Danke
Reinhold


Re: Positionieren von shapes
25.06.2003 11:33:59
L.Vira

Hat nicht genervt, sonst hätte ich gar nicht geantwortet. War sogar sehr interessant, weil auch für mich neu.
Viel Erfolg

;
Anzeige

Infobox / Tutorial

Shapes in Excel korrekt positionieren


Schritt-für-Schritt-Anleitung

Um ein Shape in Excel immer in der Mitte des sichtbaren Bildschirms zu positionieren, kannst Du folgenden VBA-Code verwenden. Dies ist besonders nützlich, wenn Du mit Excel VBA arbeitest:

Sub PositionShape()
    Dim L As Single, T As Single
    Dim shp As Shape

    ' Shape auswählen
    Set shp = ActiveSheet.Shapes("DeinShapeName")

    ' Position der oberen linken Zelle im sichtbaren Bereich ermitteln
    L = ActiveWindow.Panes(1).VisibleRange.Cells(1, 1).Left + (ActiveWindow.Width - shp.Width) / 2
    T = ActiveWindow.Panes(1).VisibleRange.Cells(1, 1).Top + (ActiveWindow.Height - shp.Height) / 2

    ' Shape positionieren
    shp.Left = L
    shp.Top = T
End Sub

Ersetze "DeinShapeName" mit dem tatsächlichen Namen Deines Shapes. Dieser Code sorgt dafür, dass das Shape unabhängig von der Scrollposition des Tabellenblattes immer in der Mitte des sichtbaren Bereichs bleibt.


Häufige Fehler und Lösungen

  • Fehler: Shape bewegt sich nicht wie gewünscht
    Lösung: Stelle sicher, dass der Name des Shapes korrekt eingegeben wurde.

  • Fehler: Shape wird nicht angezeigt
    Lösung: Prüfe, ob das Shape möglicherweise hinter anderen Objekten versteckt ist oder die Sichtbarkeit auf "Unsichtbar" gesetzt wurde.


Alternative Methoden

Wenn Du kein VBA verwenden möchtest, gibt es auch alternative Methoden. Du kannst das Shape manuell positionieren, indem Du es einfach anklickst und ziehst. Diese Methode ist jedoch weniger präzise und erfordert, dass Du die Position nach jedem Scrollen anpasst.


Praktische Beispiele

Angenommen, Du hast ein Shape mit dem Namen "MeinShape". Der folgende Code positioniert es in der Mitte des Bildschirms:

Sub BeispielShapePosition()
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes("MeinShape")

    shp.Left = (ActiveWindow.Width - shp.Width) / 2
    shp.Top = (ActiveWindow.Height - shp.Height) / 2
End Sub

Dieser Code ist besonders nützlich, wenn Du häufig die Excel Shape Position anpassen musst.


Tipps für Profis

  • Verwende die ActiveWindow-Eigenschaft, um sicherzustellen, dass Du die Position in Bezug auf das aktuelle Fenster berechnest.
  • Experimentiere mit der VisibleRange-Eigenschaft, um verschiedene Positionierungsstrategien zu entwickeln.
  • Halte Deine Shapes organisiert, indem Du ihnen klare Namen gibst, damit Du sie leichter im Code referenzieren kannst.

FAQ: Häufige Fragen

1. Kann ich Shapes auch ohne VBA positionieren?
Ja, Du kannst Shapes manuell positionieren, jedoch ist dies weniger präzise und erfordert das ständige Anpassen nach jedem Scrollen.

2. Wie kann ich die Position eines Shapes dynamisch anpassen?
Du kannst den oben genannten VBA-Code verwenden, um die Position des Shapes basierend auf der Sichtbarkeit des Fensters dynamisch anzupassen.

3. Was mache ich, wenn das Shape nicht sichtbar ist?
Überprüfe die Sichtbarkeitseinstellungen des Shapes und stelle sicher, dass es nicht hinter anderen Objekten versteckt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige