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

Von Shape auf Zeilennummer schließen?

Forumthread: Von Shape auf Zeilennummer schließen?

Von Shape auf Zeilennummer schließen?
20.07.2006 10:30:14
Markus
Hi, habe ein Shape mit Makro Verknüpft und das Shape liegt sagen wir mal in Spalte G3, kann ich irgendwie herausbekommen, was in A3 steht durch die Shape-Position also auf dessen Zeile schließen? Da steht nämlich eine Zahl die ich dringend bräuchte :(
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Von Shape auf Zeilennummer schließen?
20.07.2006 11:11:43
Heiko
Hallo Markus,
weise diese Makro mal einem Shape zu und siehe da du kriegst was du willst.

Sub ShapeInfoAusSpalteA()
' mal ein Paar Beispiele was man über das Shape so rauskriegen kann
MsgBox Application.Caller
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
MsgBox ActiveSheet.Shapes(Application.Caller).BottomRightCell.Address
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
' Und hier kommt die Info die du haben willst.
MsgBox "Und hier der Wert!  " & ActiveSheet.Range("A" & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row).Value
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Von Shape auf Zeilennummer schließen?
20.07.2006 11:27:14
Markus
geil geil geil du bist ein held :-))) Danach habe ich ewig gesucht.
Wenn ich das in mein Makro einbaue
MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
bekomme ich genau die positionierung des shapes, da das shape sich genau innerhalb einer zelle befindet.
Wie kann ich diese "Adress" so umbauen dass ich einer Variable NUR die Zeilenzahl zuordne?
Also
Zeilenzahlvonshape = ?
Das wäre genau das, was ich brauche :-)))
Anzeige
AW: Von Shape auf Zeilennummer schließen?
20.07.2006 11:31:45
Heiko
Hallo Markus,
wer lesen kann ist klar im Vorteil ;-)
denn die Antwort verbirgt sich schon im Code. Aber bei VBA NEIN helf ich dir mal beim lesen der Fremdsprache.
Zeilenzahlvonshape = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Von Shape auf Zeilennummer schließen?
20.07.2006 11:35:46
Markus
Ist mir gerade nach absenden der Nachricht aufgefallen :-)
Danke, das hilft ungemein.
M.
;
Anzeige
Anzeige

Infobox / Tutorial

Von Shape auf Zeilennummer schließen


Schritt-für-Schritt-Anleitung

Um die Zeilennummer eines Shapes in Excel VBA zu ermitteln, kannst Du das folgende Makro verwenden. Dieses Beispiel zeigt, wie Du über das Application.Caller-Objekt auf die Position des Shapes zugreifen kannst.

Sub ShapeInfoAusSpalteA()
    ' Zeigt die Adresse der oberen linken Zelle des Shapes an
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
    ' Gibt die Zeilennummer des Shapes aus
    MsgBox ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    ' Hier wird der Wert aus Spalte A der entsprechenden Zeile angezeigt
    MsgBox "Und hier der Wert! " & ActiveSheet.Range("A" & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row).Value
End Sub

In diesem Code wird Application.Caller verwendet, um die spezifische Form zu ermitteln, die das Makro aufruft. Mit TopLeftCell kannst Du die Zelle ermitteln, in der das Shape positioniert ist, und mit Row erhältst Du die Zeilennummer.


Häufige Fehler und Lösungen

  • Fehler: "Run-time error '1004': Application-defined or object-defined error"

    • Lösung: Überprüfe, ob das Shape tatsächlich auf einem aktiven Arbeitsblatt existiert und dass das Makro korrekt zugewiesen wurde.
  • Fehler: "Object variable or With block variable not set"

    • Lösung: Stelle sicher, dass Application.Caller ein gültiges Shape zurückgibt. Wenn das Makro nicht von einem Shape aufgerufen wird, kann dies diesen Fehler verursachen.

Alternative Methoden

Eine alternative Methode besteht darin, die Shapes-Sammlung direkt mit einer bekannten Shape-Name anzusprechen. Zum Beispiel:

Sub AlternativeShapeInfo()
    Dim shapeName As String
    shapeName = "MeinShape" ' Ersetze durch den tatsächlichen Namen des Shapes
    MsgBox ActiveSheet.Shapes(shapeName).TopLeftCell.Row
End Sub

Diese Methode erfordert, dass Du den Namen des Shapes kennst, was in manchen Fällen vorteilhaft sein kann.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Zeilennummer und den Wert aus Spalte A abrufen kannst:

  1. Wert aus Spalte A abrufen:

    Sub WertAusSpalteA()
       Dim zeilennummer As Long
       zeilennummer = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
       MsgBox "Der Wert in A" & zeilennummer & " ist: " & ActiveSheet.Cells(zeilennummer, 1).Value
    End Sub
  2. Verwendung in einer Schaltfläche: Wenn Du eine Schaltfläche hast, die dieses Makro ausführt, kannst Du den Wert direkt ausgeben, wenn Du auf das Shape klickst.


Tipps für Profis

  • Verwende ActiveSheet.Shapes(Application.Caller) nur, wenn Du sicher bist, dass das Makro von einem Shape aufgerufen wird.
  • Optimiere Deine Makros, indem Du die Shapes in einer Schleife durchgehst, wenn Du mehrere Shapes hast und deren Zeilennummern abfragen möchtest.
  • Berücksichtige, dass TopLeftCell immer die Zelle zurückgibt, die das Shape enthält, was nützlich für Layouts ist.

FAQ: Häufige Fragen

1. Wie kann ich die Zeilennummer eines Shapes ohne Makro herausfinden?
Du kannst die Position des Shapes manuell in Excel überprüfen, indem Du das Shape auswählst und die Eigenschaften im Formatierungsbereich ansiehst.

2. Gibt es eine Möglichkeit, die Zeilennummer in einer Variablen zu speichern?
Ja, Du kannst die Zeilennummer wie folgt speichern:

Dim zeilenzahlvonshape As Long
zeilenzahlvonshape = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row

3. Was ist Application.Caller?
Application.Caller ist ein VBA-Befehl, der das Objekt, das das Makro aufgerufen hat, identifiziert. In diesem Fall ist es das Shape.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige