Array füllen

Bild

Betrifft: Array füllen von: Hendrik
Geschrieben am: 30.03.2005 12:17:55

Hallo,

Ich habe das Problem ein Array mit 144 "Freeforms" füllen zu wollen.

die Freiformen werden in Excel ja alle irgendwie nicht nachvollziehbar numeriert, so dass ich ein Makro aufgezeichnet habe in dem ich alle ein mal markierte, um den Namen rauszubekommen.

wie schreibe ich nun die Namen komfortabel in ein Array, wenn diese in VBA codeform auf meiner VBA-Oberfläche stehen und nicht in einer, bzw. 144 Excel-Zellen?

hier ein Auszug des Makros:

ActiveChart.Shapes("Freeform 56").Select
ActiveChart.Shapes("Freeform 61").Select
ActiveChart.Shapes("Freeform 66").Select

ActiveChart.Shapes("Freeform 39").Select
ActiveChart.Shapes("Freeform 44").Select
ActiveChart.Shapes("Freeform 49").Select

ActiveChart.Shapes("Freeform 22").Select
ActiveChart.Shapes("Freeform 27").Select
ActiveChart.Shapes("Freeform 32").Select


u.s.w.

die stehen da jetzt.

Wie bekomme ich diese 144! Zeilen (oder insbes. die Namen aus den Zeilen) in ein Array?

Danke für jede Hilfe!

Hendrik.

Bild


Betrifft: AW: Array füllen von: Uduuh
Geschrieben am: 30.03.2005 12:42:12

Hallo,
ungetestet:
Sub chartnames()
dim i as integer, arrChart(144), sh as shape
i=1
for each sh in activechart.shapes
arrchart(i)=sh.name
i=i+1
next sh
End Sub


Gruß aus'm Pott
Udo


Bild


Betrifft: AW: Array füllen von: Hendrik
Geschrieben am: 30.03.2005 12:59:49

Naja, das füllt mir das Array mit den ersten 144 shapes des aktiven Charts. Leider geht das so nicht, da ich nicht alle shapes brauche, sondern NUR die aus dem Makro. Insgesamt gibt es ca. 1000 shapes in 4 verschiedenen charts.

danke trotzdem für den Ansatz.

Hendrik.


Bild


Betrifft: Um auch nur die Freeforms einzulesen... von: Boris
Geschrieben am: 30.03.2005 13:01:09

Hi Hendrik,

...und nicht auch mögliche andere Shapes, dann:

Option Explicit

Sub free_forms()
Dim ff As Shape, arr() As String, i As Integer
For Each ff In ActiveChart.Shapes
    If ff.Type = 5 Then
        ReDim Preserve arr(i)
        arr(i) = ff.Name
        i = i + 1
    End If
Next ff
End Sub


Grüße Boris


Bild


Betrifft: AW: Um auch nur die Freeforms einzulesen... von: Hendrik
Geschrieben am: 30.03.2005 13:25:56

Tut mir leid, das ist es leider auch nicht, ich muss auch sicher stellen, dass genau eine bestimmte Freeform an einer bestimmten Stelle im Array steht um schließlich die Farbe in einer Schleife nach bestimmten Regeln zu ändern. Ich glaube außerdem, dass die 1000 Shapes alle Freeforms sind, da ich sie per Copy/Paste aus Powerpoint geholt habe.

Danke aber für die Idee.

Hendrik.


Bild


Betrifft: Excel kann leider noch nicht hellsehen... von: Boris
Geschrieben am: 30.03.2005 13:31:46

Hi Hendrik,

...insofern müssen die gewünschten Freeforms mindest ein gemeinsame typische Eigenschaft haben, um sie dynamisch aus deinem Formenwust zu identifizieren.

Grüße Boris


Bild


Betrifft: AW: Excel kann leider noch nicht hellsehen... von: ransi
Geschrieben am: 30.03.2005 18:31:17

hallo hendrik

wie boris sagte:
"...insofern müssen die gewünschten Freeforms mindest ein gemeinsame typische Eigenschaft haben, um sie dynamisch aus deinem Formenwust zu identifizieren."

wenn ich dich richtig verstanden habe sind die alle selectiert.
versuch mal so:(ungetestet)


Sub chartnames()
dim i as integer
dim arrChart(144)
dim sh
i=1
for each sh in selection
arrchart(i)=sh.name
i=i+1
next sh
End Sub


ransi


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wenn-Funktion ohne "Sonst""