Excel VBA die letzten drei eingefügten Shapes auswählen

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
794
Guten Morgen.

Ich möchte gerne die letzten drei shapes auswählen. Wie ich sie einzeln auswählen kann habe ich erstellen können. Wie bekommen ich sie jedoch gemeinsam markeirt?

Code:
Sub ShapesAnsprechenLetztes()
    Dim objShape As Shape
    With ActiveSheet
      Set objShape = .Shapes(.Shapes.Count)
    End With
    objShape.Select
End Sub

Sub ShapesAnsprechenVorletztes()
    Dim objShape As Shape
    With ActiveSheet
      Set objShape = .Shapes(.Shapes.Count - 1)
    End With
    objShape.Select
End Sub

Sub ShapesAnsprechenVorVorletztes()
    Dim objShape As Shape
    With ActiveSheet
      Set objShape = .Shapes(.Shapes.Count - 1)
    End With
    objShape.Select
End Sub
 
Moin.

Ja steht und mit Array habe ich es probiert. es funktioniert jedoch leider nicht.

Code:
    ActiveSheet.Shapes.Range(Array(ActiveSheet.Shapes(.Shapes.Count), ActiveSheet.Shapes(.Shapes.Count - 1), ActiveSheet.Shapes(.Shapes.Count - 2))).Select
 
Wenn man das Beispiel oder auch die Doku liest kann man feststellen, dass entweder Zahlen oder Namen ins Array übergeben werden sollen.

Du tust weder noch.

Versuch es mal einfach nur mit
Code:
.Shapes.Count , .Shapes.Count - 1 , .Shapes.Count - 2
im array, oder mit
Code:
ActiveSheet.Shapes(.Shapes.Count).Name ,  ActiveSheet.Shapes(.Shapes.Count - 1).Name , ActiveSheet.Shapes(.Shapes.Count - 2).Name
 
  • Gefällt mir
Reaktionen: floq0r
Moin.

beides gerade ausprobiert. Es kommt weiterhin unzulässiger Name. :(
 
Ich würde auf nacheinander und "Replace:=False" setzen.

Und - ich traue der Referenzierung nicht… Oder mehr traue ich ihr alles zu…
ActiveSheet.Shapes(.Shapes.Count).Name → ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name


Persönlich ist mir die Frage zum Thread selbst »die letzten drei eingefügten« zu kitzlig.
Die Zählung mit .Cound und jeweils -1, -2 scheint zwar schlüssig, aber erwischen wir, aus welchen Gründen auch immer die richtigen 3 Letzten? Und macht das Sinn so zu zählen statt, wohl oder übel, IDs, Namen, zu vergeben und stur darauf zu referenzieren?

CN8
 
  • Gefällt mir
Reaktionen: Janush
Und hast du es hinbekommen? Es fehlt bei dir irgendwie immer die finale Rückmeldung. Mich würde ja sowieso mal interessieren, was du da für ein Tool zusammen geklickt hast :-)

Falls es widererwarten immer noch nicht geht, probier mal das aus. Ich habe das gerade mal getestet und läuft bei mir. Man muss natürlich schauen, dass man auch genug Shapes zum auswählen hat, aber das brauche ich ja eigentlich nicht zu erwähnen.

Was mir auch noch einfällt ist, dass ziemlich viel Zeug unter Shapes fällt. Shapes, Buttons, Diagramme, usw.. Vielleicht kommt dein Fehler auch daher.

So, hier der code:

Code:
Sub MarkiereDieLetzten3Shapes()

    With Sheet1 'Wo auch immer die shapes drauf liegen
    
        With .Shapes
            
            .Range(.Count - 0).Select
            .Range(.Count - 1).Select False
            .Range(.Count - 2).Select False
        
        End With
    
    
    End With

End Sub
 
  • Gefällt mir
Reaktionen: Excelmania
Guten Abend.

Sorry für die späte Rückmeldung. Perfekt vielen Dank.
 
Zurück
Oben