Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellposition Piktogramm ermitteln

Zellposition Piktogramm ermitteln
16.02.2023 13:06:47
Timm
Hallo zusammen,
für ein Makro benötige ich die genaue Zellposition eines Piktogrammes (Lupe). Das Piktogramm öffnet eine Userform mit einer ListBox. Nach Auswahl eines Eintrages aus der ListBox soll die Auswahl in der Zelle des Piktogrammes geschrieben werden. Bei einem CommandButton funktioniert es ja wie folgt:
Sub Test()
With ActiveSheet.CommandButton1
MsgBox "Obere linke Ecke " & .TopLeftCell.Address
End With
End Sub
Folgender Code führt zu der Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht."
Sub Test()
With ActiveSheet.Shapes.Range(Array("Graphic 4"))
MsgBox "Obere linke Ekce" & .TopLeftCell.Address
End With
End Sub
Wie lautet die richtige Syntax?
Vielen Dank vorab.
Gruß Timm R.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellposition Piktogramm ermitteln
16.02.2023 13:12:32
Beverly
Hi Timm,
With ActiveSheet.Shapes("Graphic 4")
    MsgBox "Obere linke Ecke" & .TopLeftCell.Address
End With
Bis später
Karin

AW: Zellposition Piktogramm ermitteln
16.02.2023 14:07:58
Timm
Hallo ihr drei,
vielen Dank für die schnelle Rückmeldung. Habe es soeben umgesetzt.
Funktioniert wie gewünscht.
Gruß
Timm
ChatGPT antwortet...
16.02.2023 13:13:30
MCO
wenn ich deinen Beitrag 1:1 poste:
Der Fehler "Objekt unterstützt diese Eigenschaft oder Methode nicht" tritt auf, weil die Eigenschaft TopLeftCell auf Formularsteuerelemente wie z.B. Schaltflächen, Listenfelder und Kontrollkästchen beschränkt ist und nicht auf alle Formen in Excel angewendet werden kann.
Wenn Sie die Zellposition einer Form wie eines Piktogramms abrufen möchten, können Sie die Eigenschaften Left und Top der Form verwenden, um die Koordinaten der oberen linken Ecke der Form in Bezug auf die Position der oberen linken Ecke des Arbeitsblatts zu erhalten. Sie können dann die Range-Methode des Arbeitsblatts verwenden, um die Zelle anhand der berechneten Koordinaten zu identifizieren.
Hier ist ein Beispiel-Code, der Ihnen zeigt, wie Sie die Position des Piktogramms ermitteln können:
Sub Test()
    Dim myShape As Shape
    Set myShape = ActiveSheet.Shapes("Graphic 4")
    
    ' Koordinaten der oberen linken Ecke des Piktogramms
    Dim leftCoord As Double
    leftCoord = myShape.Left
    
    Dim topCoord As Double
    topCoord = myShape.Top
    
    ' Identifizieren der Zelle anhand der Koordinaten
    Dim myCell As Range
    Set myCell = ActiveSheet.Range(ActiveSheet.Cells(topCoord, leftCoord).Address)
    
    MsgBox "Zelle: " & myCell.Address
End Sub
Hinweis: Beachten Sie, dass die Koordinaten auf Pixelbasis sind und nicht unbedingt einer spezifischen Zeilen- und Spaltennummer auf dem Arbeitsblatt entsprechen. Sie müssen daher möglicherweise weitere Anpassungen an Ihrem Code vornehmen, um sicherzustellen, dass Sie die Zelle richtig identifizieren.
--- Zitat ende
Probiers mal aus.
Gruß, MCO
Anzeige
AW: ChatGPT antwortet...
17.02.2023 06:49:23
Luschi
Hallo MCO,

wenn jetzt ChatGPT-Vorschläge ungeprüft weitergegeben werden, na dann prost Mahlzeit - das ist doch Bullsh... hoch 3.
Positionsangaben von .Top und .Left direkt in Zeilen- und Spaltenpositionen für 1 Zelle einzusetzen sieht genial aus, ist aber total genial daneben.
Und ActiveSheet.Range(ActiveSheet.Cells(topCoord, leftCoord).Address) hat mit objektorientierter Programmierung überhaupt nix zu tun, denk mal drüber nach.
Gruß von Luschi
aus klein-Paris
AW: ChatGPT antwortet...auch mal falsch
17.02.2023 08:56:50
MCO
Moin!
Du hast völlig recht: Das Ergebnis ist bestenfalls als Gerüst zu gebrauchen, manchmal aber eben auch gar nicht weil faktisch falsch.
Tut mir leid, wenn ich dadurch mehr Verwirrung gestiftet hab.
Gruß, MCO
Anzeige
AW: Zellposition Piktogramm ermitteln
16.02.2023 13:52:02
Daniel
Hi
die Ansprache über Shape.Range(Array...)) spricht im Prinzip eine Gruppe von mehreren Shapes an.
mehrere Shapes als Gruppe haben aber keine eindeutige TopleftCell, daher gibt es hier diese Eigenschaft nicht.
du musst hier das Einzelshape ansprechen, dann kannst du auch die TopLeftCell abfragen.
der Recorder hilft hier leider nicht weiter, weil er immer die Gruppenansprache aufzeichnet.
Daher so wie schon von Beverly gezeigt: ActiveSheet.Shapes("Graphic 4").TopLeftCell
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige