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
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.
Fehler: "Run-time error '1004': Application-defined or object-defined error"
Fehler: "Object variable or With block variable not set"
Application.Caller ein gültiges Shape zurückgibt. Wenn das Makro nicht von einem Shape aufgerufen wird, kann dies diesen Fehler verursachen.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.
Hier sind einige praktische Beispiele, wie Du die Zeilennummer und den Wert aus Spalte A abrufen kannst:
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
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.
ActiveSheet.Shapes(Application.Caller) nur, wenn Du sicher bist, dass das Makro von einem Shape aufgerufen wird.TopLeftCell immer die Zelle zurückgibt, die das Shape enthält, was nützlich für Layouts ist.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.