Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
600to604
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
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ungroup --> Array

Ungroup --> Array
18.04.2005 09:16:17
harry
Hallo Leute,
erstmal einen gutenmorgen und eine gute Woche.
Ich habe folgende Frage/Problem:
Ich will die Namen von einem Ungroup in einem Array
speichern, also sprich ich habe eine Group Element
lasse es nun ungroupieren und von den daraus erhaltenen
Elementen, sollen die NAmen gespeichert werden.
Wie gehe ich da vor?
ActiveSheet.Shapes("Logo1").Select
Selection.Ungroup
' die Namen sollen hier gespeichert werden
ActiveSheet.Shapes("Logo").Select
Selection.Ungroup
'sowie diese Namen sollen hier gespeichert werden

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ungroup --> Array
18.04.2005 09:29:02
MichaV
Hi,
z.B. so:
Dim i As Integer
Dim anz As Integer
Dim arr() As String
anz = ActiveSheet.Shapes("Group 4").GroupItems.Count
ReDim arr(anz)
For i = 1 To anz
arr(i) = ActiveSheet.Shapes("Group 4").GroupItems(i).Name
Next i
ActiveSheet.Shapes("Group 4").Ungroup
For i = 1 To anz
MsgBox arr(i)
Next i
Gruß- Micha
PS: Rückmeldung wäre nett
AW: Ungroup --> Array
18.04.2005 10:33:42
harry
Hi Micha,
erstmal danke für deine Antwort.
Leider erhalte ich eine Run Time Error in der Zeile
anzLogo = ActiveSheet.Shapes("Logo").GroupItems(a).Count
mit
Dim anzLogo As Integer
Dim arrLogo1() As String
Dim arrLogo() As String
Dim a As Integer
Fehlermeldung: The index into the specified collection is out of bounds !
Was nun?
Anzeige
AW: Ungroup --> Array
18.04.2005 10:46:57
harry
Hi Micha,
hatte tipfehler .... sorry :)
Andere frage ... wenn ich nun diese Items wieder zu einer Group
wiederherstellen möchte, durchlaufe ich wieder die schleife?
Oder?
AW: Ungroup --> Array
18.04.2005 10:55:28
MichaV
Hi,
anzLogo = ActiveSheet.Shapes("Logo").GroupItems(a).Count geht nicht. Ich denke, Du willst die Anzahl der vorhandenen Shapes ermitteln.
Mach das mit anzLogo = ActiveSheet.Shapes.Count
Wenn Du rausfinden willst, ob es sich um ein gruppiertes Shape handelt, dann prüfe, ob ActiveSheet.Shapes(x).Type= msoGroup
Gruß- Micha
AW: Ungroup --> Array
18.04.2005 10:58:44
harry
Hi Micha,
ich habe vorhin noch ein Beitrag geschrieben gehabt, aber wohl vegessen es abzuschicken.
Ich hatte ein tippfehler und deswegen war der fehler aufgetreten.
Thx :)
Aber eineandere Frage.
Wenn ich nun den den Inhalt des Arrays wieder zu einer group bilden will, wie gehe ich voran?
Gruß
harry
Anzeige
AW: Ungroup --> Array
18.04.2005 11:11:30
MichaV
Hi,
da hat sich was überschnitten.
Mit ActiveSheet.Shapes.Range(arr).Group gruppierst du wieder. Aber nimm oben das AS STRING hinter DIM arr() wieder raus! Sonst klappts nicht.
Gruß- Micha
AW: Ungroup --> Array
18.04.2005 11:13:22
harry
thx micha,
werde es später ausprobieren, da ich gerade vorher noch was anderes erledigen muss ...
cu later ;)
AW: Ungroup --> Array
18.04.2005 11:54:24
harry
So Micha,
habe nun genau wie du gesagt hast das Array nicht als string deklariert,
da sonst ein Fehler auftritt (Falscher wert oder so).
Leider aber erhalte ich trotzdem einen Kompilierfehler:
Run Time Error '1004'
The index into the specified collection is out of bounds
Was will er mir denn jetzt damit sagen?
Anzeige
AW: Ungroup --> Array
18.04.2005 15:41:26
harry
Nochmal ich,
weiß jemand wieso nach dieser Eingabe
Dim arr()
ActiveSheet.Shapes.Range(arr).Group
ich einen Kompilierfehler erhalte?
AW: Ungroup --> Array
18.04.2005 19:57:18
andre
Hallo Harry,
vielleicht ist in arr nix drin wenn Du es gerade gedimmt hast ... Und dann brauchst Du glaube kein Array, sondern eine Aufzählung in String-Form ("a, b, c").
Wenn Du die Gruppierung wiederherstellen willst dann tue gleich nach dem Namen auslesen regroup ausführen. Zum Auslesen der Namen brauchst Du in 2000 die Gruppe noch nicht zu trennen, erst in XP wirds komplizierter. Wenn Du in den Gruppen Elemente gleichen Namens hast - also in Gruppe1 ein Text1, in Gruppe2 ein Text1 und in den anderen Gruppen auch dann wird es lustig.
Anzeige
AW: Ungroup --> Array
19.04.2005 08:54:21
harry
Habe inzwischen Problem gelöst.
Da Array ja normalerweise von 0 anfängt, war der Inhalt mit index 0 immer leer!
Wieso auch immer. Habe also außerhalb der Prozedur einfache Base 1 gesetzt und schon funktionierte alles wieder.
Bzgl. Regroup geht leider hier nicht, da ich ein Picture lösche, und somit ist die einstige konstelation nicht mehr vorhanden.
Grüße
Harry
AW: Ungroup --> Array
19.04.2005 17:50:35
MichaV
Hi,
jetzt fällts mir wie Schuppen von den Haaren... genau das war das Problem! Nich Dim arr() sondern Redim(1 to x) war wichtig. Ich hab da auch lange gesucht. Aber das hast Du ja gelöst.
Warum nimmst du nicht den Namen des gelöschten Pictures aus dem Array raus? Dann klappt Gruppierung auch. So würde es gehen:


      
For i = 1 To UBound(arr) - 1
  
If arr(i) = NameDesZuLöschendenBildes Then
    
For x = i To UBound(arr) - 1
      arr(x) = arr(x + 1)
    
Next x
  
End If
Next i
ReDim Preserve arr(1 To UBound(arr) - 1)
End Sub 

     Code eingefügt mit Syntaxhighlighter 3.0

Gruß- Micha
Anzeige
AW: Ungroup --> Array
20.04.2005 11:53:25
harry
Du Micha,
kannst du mir erklären was du da genau mit dem code machst?
Außerdem habe ich noch eine Frage.
Ich will gerne in einem Sheet alle Shapes die den Namen
z.B. "DiesenHier" haben durchzählen.
Problem hierbei, es handelt sich nur um einen Teil des Namens, denn
"DiesenHier" wird durchnummeriert, das heißt in meinem Sheet
habe ich folgendes :
Shape 1 = "DiesenHier1"
Shape 2 = " DiesenHier2"
usw.
Wie zähle ich hier denn durch ?
Denn ich brauche unbedingt die Anzahl dieser Shapes !
AW: Ungroup --> Array
20.04.2005 12:23:34
MichaV
Hi,
Für Dein neues Problem wäre denkbar:
such="DiesesHier"
if instr(shapes(x).name,such)>0 then 'Name des Shapes enthält "DiesesHier"
'oder
if left(shapes(x).name,len(such)+1)=such then 'linker Teil des Names entspricht "DiesesHier"
Die notwendigen Schleifen zum Suchen aller Shapes kennst Du ja.
Hier noch ne Erklärung zum vorigen Code:
For i = 1 To UBound(arr) - 1 'Alle Sätze des Array, bis auf das letzte
If arr(i) = NameDesZuLöschendenBildes Then 'Wenn Satz=zu löschender Wert dann
For x = i To UBound(arr) - 1 'die restlichen Daten
arr(x) = arr(x + 1) 'um eins nach unten verschieben
'(dadurch wird der zu löschende Satz automatisch
'überschrieben)
Next x
'hier könnte ein Exit For rein, denn es macht keinen Sinnn, die i- Schleife weiter abzuarbeiten
End If
Next i
ReDim Preserve arr(1 To UBound(arr) - 1) 'Das Datenfeld neu dimensionieren mit einer um 1 kleineren Obergrenze, denn es ist ja ein Datensatz weniger
End Sub

Gruß- Micha
Anzeige
AW: Ungroup --> Array
20.04.2005 13:21:28
Harry
Nach eingabe und debugen erhlate ich aber nun
ein Kompilierfehler
"Sub or Function not defined"
und er zeigt mir das er Schapes meint bei diesen aufruf :
if left(shapes(x).name,len(such)+1)=such then ...
Erklärung wieso ?
Danke nochmals für die Erklärung des codes ;)
AW: Ungroup --> Array
20.04.2005 13:31:17
MichaV
Hi,
kannst doch nicht nur mein Codeschnipsel nehmen. So der vollständige Code:
such="Text"
For x = 1 To ActiveSheet.Shapes.Count
if left(shapes(x).name,len(such)+1)=such then 'Name beginnt mit "Text"
'hier nun Dein Code (was auch immer Du machen willst)
end if
Next i
Gruß! Micha
Anzeige
AW: Ungroup --> Array
20.04.2005 17:27:28
harry
Natürlich ist mir das klar Micha :)
wollte nur andeuten das an dieser Stelle er mir einen Kompilierfehler erzeugt!
Wenn ich wiederum
if left(shapes(x).name,len(such)+1)=such then ... in
if left(shapes.name,len(such)+1)=such then ....
umwandle scheint es zu laufen ....

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige