Wie kann ich die Gruppe eine Reihe von Formen, die programmgesteuert in excel 2007 vba?
Ich bin der Iteration über die Daten auf der Elektrischen Tabellen-Blatt und erstellen von Formen auf einem Form Blatt. Sobald die Formen geschaffen sind, möchte ich programmatisch zusammenfassen. Allerdings kann ich nicht herausfinden, die richtige syntax. Die Formen gibt es, ausgewählt, und wenn ich auf die Schaltfläche Gruppe, diese Gruppe perfekt. Aber mit dem folgenden code bekomme ich
Runtime Error 438-Objekt unterstützt diese Methode oder Eigenschaft.
Ich bin stützend diesen code auf vba-Beispiele aus dem web - ich bin nicht besonders vba-Programmierer. Was ist der richtige Weg, dies zu tun? Ich arbeite mit excel 2007 und Wechsel in den excel-Versionen eine option nicht.
problematisch snippet :
Set shapeSheet = Worksheets("Shapes")
With shapeSheet
Selection.ShapeRange.Group.Select
End With
Kontext :
Dim shapeSheet As Worksheet
Dim tableSheet As Worksheet
Dim shpGroup As Shape
Set shapeSheet = Worksheets("Shapes")
Set tableSheet = Worksheets("Electrical Tables")
With tableSheet
For Each oRow In Selection.Rows
rowCount = rowCount + 1
Set box1 = shapeSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50 + ((rowCount - 1) * 14), 115, 14)
box1.Select (False)
Set box1Frame = box1.TextFrame
Set box2 = shapeSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 165, 50 + ((rowCount - 1) * 14), 40, 14)
box2.Select (False)
Set box2Frame = box2.TextFrame
Next
End With
Set shapeSheet = Worksheets("Shapes")
With shapeSheet
Selection.ShapeRange.Group.Select
End With
InformationsquelleAutor Andrew Bucknell | 2011-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser arbeitete für mich in Excel 2010:
Hatte ich zwei Formen auf Blatt 1, die wurden aufgelöst, bevor Sie die oben beschriebene Methode und gruppiert nach.
Bearbeiten
Auf bestimmte Formen der Verwendung von Indizes:
Namen:
das ist seltsam, dass
Group
funktioniert nicht in Excel 2007. Ich werde testen, dass der weitere morgen, wenn ich auf der Arbeit bin. (Ich habe Office 2007.) AuchSelectAll
war einfach ein schneller Weg für mich zu wählen Sie mehrere Formen. Für Ihre situation, würden Sie wollen, um die Range-Eigenschaft des Shapes-Objekts. Ich werde aktualisieren, meine Antwort...tatsächlich: check-out chris Nielsen ' s Antwort. Es ist perfekt für das, was du tust. Ersetzen Sie einfach die
Box1.Name
's mit deiner TextBox Variablen (wie viele es sind) und Sie sollten gut zu gehen.(Den obigen Kommentar davon ausgegangen, dass Sie waren in der Lage, um die Group-Methode zu arbeiten.)
Danke Nick - bit-ich fehlte war zu tun shapeSheet.Aktivieren, bevor Sie versuchen zu arbeiten, mit der Auswahl für das Blatt. Gruppe funktioniert - vielen Dank für zeigt mir die richtige syntax.
InformationsquelleAutor Nick Spreitzer
Kein müssen zuerst auswählen, benutzen Sie einfach
PS. der Grund, warum Sie die Fehlermeldung erhalten, dass das selection-Objekt Punkte, was auch immer ausgewählt wird, auf das Blatt (die nicht werden die Formen einfach erstellt werden), wahrscheinlich ein
Range
undRange
keinenShapes
Eigenschaft. Wenn Sie zufällig noch andere Formen auf dem Blatt, und Sie wurden ausgewählt, dann würden Sie gruppiert werden.Hässlich, aber scheint die einzige Möglichkeit, um ein ShapeRange.
InformationsquelleAutor chris neilsen
Ich hatte das gleiche problem, aber erforderlich, um wählen Sie ein paar Formen (vorher erstellt und das makro aufgeführt und in ein array von Formen), aber nicht "wählen.alle", weil es möglicherweise andere Formen auf der Folie.
Die Schaffung einer shaperange-war nicht wirklich einfach.
Der einfachste Weg ist, einfach mit dem Fahrrad durch die shape-Objekte (wenn Sie bereits wissen,), und wählen Sie simulieren "halten Sie die Strg-Taste gedrückt" mit der option "Replace:=False".
So, hier ist mein code:
Hoffe, das hilft,
Kerry.
InformationsquelleAutor Kerry