Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA: Mehrere Shapes auswählen





Frage

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 1 von Beverly

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: