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

VBA: Zelle unter Shape identifizieren?

Forumthread: VBA: Zelle unter Shape identifizieren?

VBA: Zelle unter Shape identifizieren?
Michael
Hallo,
Kann mir jemand einen Tipp geben, wie es mit VBA möglich ist, zu erkennen welche Zelle(n) unter einem Pfeil liegen.
Hintergrund:
Nach dem automatischen Erstellen einen Pfeiles, soll in dessen Nähe eine Zelle beschrieben werden (mit einem Kommentar zu diesem Pfeil). Dafür muesste ich aber ungefähr wissen, wie der Pfeil auf dem Excel-Sheet liegt. Idealerweise bräuchte ich genau die Zelle, die unter dem Mittelpunkt des Pfeiles liegt.
Geht sowas überhaupt?
Danke für die Hilfe,
Michael
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Zelle unter Shape identifizieren?
10.07.2009 11:51:53
Kawensmann
Hallo,
Shapes haben eine TopLeftcell und eine BottomRightCell-Eigenschaft.
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
Debug.Print sh.TopLeftCell.Address, sh.BottomRightCell.Address
Next
Gruß
Kawensmann
AW: VBA: Zelle unter Shape identifizieren?
10.07.2009 12:14:27
Michael
Servus,
Vielen Dank. Das geht zur Not.
Leider habe ich geschwungene Pfeile und bei denen, kann man dadurch rel. schwierig eine Zelle in der Nähe der Mitte des Pfeils finden (ohne die Zelle, dann genau unter dem Pfeil zu erwischen).
Ich werds trotzdem mal mit Deinem Vorschlag versuchen, vielleicht trifft mans ja ganz gut.
Gruesse,
Michael
Anzeige
;
Anzeige

Infobox / Tutorial

Zelle unter Shape mit VBA identifizieren


Schritt-für-Schritt-Anleitung

Um die Zelle unter einem Shape, wie beispielsweise einem Pfeil, zu identifizieren, kannst Du die folgenden Schritte in VBA ausführen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul".

  3. Kopiere den folgenden VBA-Code in das Modul:

    Dim sh As Shape
    For Each sh In ActiveSheet.Shapes
       Debug.Print sh.TopLeftCell.Address, sh.BottomRightCell.Address
    Next
  4. Führe den Code aus, indem Du auf F5 drückst.

  5. Überprüfe das Immediate-Fenster (Strg + G), um die Adressen der Zellen zu sehen, die sich unter den Shapes befinden.

Dieser Code gibt Dir die Adressen der Zellen aus, die sich in den Ecken der Shapes befinden. Für geschwungene Pfeile ist es jedoch schwierig, die mittlere Zelle zu finden, da diese Zellen nicht direkt unter dem Shape liegen.


Häufige Fehler und Lösungen

  • Problem: Der Code gibt keine Adressen aus.

    • Lösung: Stelle sicher, dass Du Shapes auf dem aktiven Blatt hast. Überprüfe auch, ob das Immediate-Fenster geöffnet ist.
  • Problem: Die Adressen sind nicht die gesuchten Zellen.

    • Lösung: Du kannst die Mittelpunkte der Shapes berechnen und dann die nächstgelegene Zelle ermitteln, indem Du die Eigenschaften Top und Left des Shapes nutzt.

Alternative Methoden

Eine alternative Methode besteht darin, den Mittelpunkt des Shapes zu berechnen und dann die entsprechende Zelle zu finden:

Dim sh As Shape
Dim cell As Range
For Each sh In ActiveSheet.Shapes
    Dim midX As Double
    Dim midY As Double
    midX = sh.Left + (sh.Width / 2)
    midY = sh.Top + (sh.Height / 2)
    Set cell = ActiveSheet.Cells(Application.Round(midY / ActiveSheet.Cells(1, 1).Height, 0) + 1, _
                                  Application.Round(midX / ActiveSheet.Cells(1, 1).Width, 0) + 1)
    Debug.Print cell.Address
Next

Diese Methode ermöglicht es Dir, den nächstgelegenen Shape und die Zelle in der Nähe des Mittelpunktes zu bestimmen.


Praktische Beispiele

Wenn Du beispielsweise einen geschwungenen Pfeil hast und die Zelle direkt darunter nicht genau bestimmen kannst, kannst Du den oben genannten Code verwenden, um die Zelle, die am nächsten zum Mittelpunkt des Pfeils liegt, zu finden. Dies kann besonders nützlich sein, wenn Du Kommentare oder Daten in der Nähe dieser Shapes hinzufügen möchtest.


Tipps für Profis

  • Nutze die vba graphics-Funktionen, um die Shapes dynamisch zu gestalten.
  • Denke daran, dass die Zellen, die unter einem Shape liegen, auch mithilfe von Intersect überprüft werden können, um zu sehen, ob sie mit einem bestimmten Bereich überlappen.
  • Experimentiere mit der TopLeftCell und BottomRightCell-Eigenschaft, um präzisere Ergebnisse zu erzielen.

FAQ: Häufige Fragen

1. Kann ich auch mehrere Shapes gleichzeitig überprüfen?
Ja, der bereitgestellte Code überprüft alle Shapes auf dem aktiven Blatt in einer Schleife.

2. Wie kann ich die Zelle unter einem komplexen Shape finden?
Für komplexe Shapes kannst Du den Mittelpunkt berechnen und dann die entsprechende Zelle ermitteln, wie im Abschnitt "Alternative Methoden" beschrieben.

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