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

Select umgehen bei Shape Gruppierung

Select umgehen bei Shape Gruppierung
01.07.2005 16:46:18
marko_ti
Hallo liebe Leute,
ich möchte einen Teil der Shapes auf einem Tabellenblatt gruppieren und benamsen, am liebsten ohne select. Bisher machte ich das so (mit Select und fester Anzahl):
ActiveSheet.Shapes.Range(Array(ShName, ShName & "1LEF", ShName & "2LEF", ShName & "1RIG", ShName & "2RIG")).Select
Selection.ShapeRange.Group.Select
Selection.ShapeRange.Name = ShName & "ALL"
dabei ist ShName ein Hauptname und alles was zu diesem Namen "passt" (mit "1LEF" usw als Endung) soll damit gruppiert werden. In Zukunft wird es aber z.B. bis "9LEF" und "9RIG" gehen, daher möchte ich eine Schleife nutzen:
ActiveSheet.Shapes.Range(ShName).Select
For i = 1 To 9
__ For j = 1 To 2
____ If j = 1 Then FragmentName = LTrim$(Str(i)) & "LEF" _
_____ Else: FragmentName = LTrim$(Str(i)) & "RIG"
____ ActiveSheet.Shapes.Range(ShName & FragmentName).Select
__ Next j
Next i
Selection.ShapeRange.Group.Select
Selection.ShapeRange.Name = ShName & "ALL"
...aber 1. führt jedes select dazu, dass die Vorauswahl wieder vergessen wird (gibt es ein .AddToSelection oder sowas?!) und 2. möchte ich das select am liebsten ganz vermeiden(!), aber wie? Und wie dann benamsen?
Für Eure Tipps wäre ich dankbar!!!
Viele Grüße aus Kölle
Marko

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select umgehen bei Shape Gruppierung
01.07.2005 17:02:45
Peter
Servus,
mal als Bsp. den Rest schaffst bei deinem Level selber.
Sub t2()
Dim shbild As Shape
For Each shbild In ActiveSheet.Shapes
MsgBox shbild.Name
Next
End Sub

MfG Peter
AW: Select umgehen bei Shape Gruppierung
01.07.2005 17:15:26
marko_ti
Hallo Peter,
danke für die schnelle Antwort, aber for each kenne ich natürlich, allerdings brauche ich ja nur eine Untermenge. Ok, dann könnte ich mit if shbild.Name = ... testen, ob das Shape zur Untermenge gehört - und wenn ja? Dann stehe ich an der gleichen Stelle wie in der Schleife, die die Shapes direkt per Namen anspricht. Und dann - selektiere ich es (das will ich vermeiden)? Dann ersetzt jedes Select das vorhergehende wie in meiner Schleife.
Füge ich es einer Gruppe zu? Aber wie?! Und wie die Gruppe benamsen?
Die Shapes ansprechen ist ja nicht das Problem, das geht auch ohne for each. Und den Namen der Einzelteile herauskriegen ist auch nicht das Problem.
Die Lösung für das Umgehen von Select für eine Untermenge ist das noch nicht...
Noch eine Idee?
Grüße Marko
Anzeige
AW: Select umgehen bei Shape Gruppierung
01.07.2005 17:41:52
Nepumuk
Hi,
ist doch ganz einfach:
Public Sub test()
    Dim vArray() As Variant
    Dim oRange As ShapeRange
    Dim oShape As Shape
    Dim iCounter As Integer
    For Each oShape In ActiveSheet.Shapes
        If Left$(oShape.Name, 4) = "Oval" Then
            iCounter = iCounter + 1
            Redim Preserve vArray(1 To iCounter)
            vArray(iCounter) = oShape.Name
        End If
    Next
    Set oRange = ActiveSheet.Shapes.Range(vArray)
    Set oShape = oRange.Group
    oShape.Name = "Test"
End Sub

Gruß
Nepumuk
Anzeige
AW: Select umgehen bei Shape Gruppierung :-)
01.07.2005 17:55:48
marko_ti
VIELEN DANK, das war der nötige Anstoß! :-)
Das "for each" wollte ich umgehen, da das ewig braucht bei meinen "Millionen" von Shapes, aber so geht's:
Dim vArray() As Variant
Dim oRange As ShapeRange
Dim oShape As Shape
Dim iCounter As Integer
iCounter = 0
For i = 0 To NumFragments
__ For j = 1 To 2
____ If j = 1 Then FragmentName = LTrim$(Str(i)) & "LEF" _
_____ Else: FragmentName = LTrim$(Str(i)) & "RIG"
____ iCounter = iCounter + 1
____ ReDim Preserve vArray(1 To iCounter)
____ vArray(iCounter) = thistext & FragmentName
__ Next j
Next i
Set oRange = ActiveSheet.Shapes.Range(vArray)
Set oShape = oRange.Group
oShape.Name = thistext & "ALL"
Danke nochmal und viele Grüße
Marko (dessen WE nun gerettet ist)
;-)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige