online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Oli00 vom 23.03.2019, 10:36 Options

VBA: Mehrere Shapes auswählen

Hi,

ich würde gerne alle Shapes eines bestimmten Typs auswählen. Die Selection bekomme ich noch einigermaßen einfach hin. Bei der Auswahl der gespeicherten Shapes hapert es dann allerdings. Hat da vielleicht jemand ne Ahnung?

Grüße

Oli



Sub Makro2()

Dim bilder As Shape
Dim alle_bilder(100)

counter = 0

For Each bilder In ActiveSheet.Shapes
nm = bilder.Name
If bilder.Type = 17 Then
If counter = 0 Then
alle_bilder(1) = bilder.Name
counter = 1
Else
counter = counter + 1
alle_bilder(counter) = bilder.Name
End If
End If
Next bilder

ActiveSheet.Shapes.Range(alle_bilder).Select

End Sub


Antwort schreiben

Antwort 1 von Beverly vom 23.03.2019, 14:17 Options

Hi Oli,

versuche es mit folgendem Code

Sub Makro2()
    Dim bilder As Shape
    Dim alle_bilder()
    Dim counter As Integer
    counter = 0
    For Each bilder In ActiveSheet.Shapes
        If bilder.Type = 17 Then
            ReDim Preserve alle_bilder(0 To counter)
            alle_bilder(counter) = bilder.Name
            counter = counter + 1
        End If
    Next bilder
    ActiveSheet.Shapes.Range(alle_bilder).Select
End Sub


Bis später,
Karin

Antwort 2 von Oli00 vom 28.03.2019, 10:50 Options

Also es ist jetzt sicher nicht verwunderlich für dich, aber es funktioniert :)

Meine Frage die bleibt: "Wieso funktioniert es?"

Erst habe ich Redim weggelassen, was nicht funktioniert hat.

Mein Gedanke war, dass Ihm vielleicht die Array Dimension fehlt. Also habe ich das Array auf 50 gesetzt. Hat auch nicht funktioniert.

Dann dachte ich, dass die Range methode die leeren Arrayzellen versucht auch anzuwählen oder einfach misinterpretiert. Also habe ich das Array auf 3 gesetzt, weil ich drei Shapes habe, die ich selektieren möchte. Hat auch nicht funktioniert.

Das Redim preserve ist doch eigentlich nur dafür da das Array von der Größe her anzupassen oder!?

Viele Grüße

Oli

Antwort 3 von Beverly vom 28.03.2019, 18:47 Options

Hi Oli,

in meinem Code bin ich davon ausgegangen, dass nicht bekannt ist, wie viele Bilder sich in deiner Tabelle befinden, weshalb ich ein nach oben offenes Array verwendet habe.

In deinem Code ist folgender Fehler: jedes Array beginnt bei 0, du schreibst jedoch das erste Bild nicht auf 0 sondern auf 1. Wenn du diese Codezeile vor das Makro schreibst

Option Base 1


sollte es eigentlich funktionieren.

Bis später,
Karin

Ähnliche Themen

VBA: Eine Variable in einem String
Oli00  23.03.2007 - 92 Hits - 2 Antworten

VBA: Diagramm mit getrennten dynamischen Datenquellen
ComoMolo  14.09.2007 - 16 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026