Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

shapes eines Bereiches gruppieren

Forumthread: shapes eines Bereiches gruppieren

shapes eines Bereiches gruppieren
02.07.2014 21:05:19
stef26
Guten Abend,
ich bastle (kann leider kaum VBA)gerade an einen kleinen Tool für dies ich folgende
Funktion bräuchte:
Ich wähle mit der Maus einen Bereich aus.
Mit dem Macro sollen alle shapes (eingeblendete) gruppiert werden.
Habs so probiert, hat leider nicht funktioniert:
Sub GruppierungBereich()
Dim objShp As Shape
Dim rng As Range
On Error GoTo Infotext
Set rng = Selection
For Each objShp In ActiveSheet.Shapes
If objShp.Visible = False Then GoTo überspr
If Not Intersect(objShp.TopLeftCell, rng) Is Nothing Then objShp.Group
überspr:
Next
Set rng = Nothing
GoTo Ende
Infotext:
MsgBox ("Es wurde kein Bereich selektiert!")
Ende:
End Sub

Könnte mir jemand sagen wie ich den code ändern müsste, damit es funktioniert ?
:-)
Stefan

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: shapes eines Bereiches gruppieren
03.07.2014 00:43:15
Mullit
Hallo,
vielleicht könnte so etwas funktionieren;
Du müsstest hinterher ggF. die Shapes wieder ungruppieren
und es müssen mindestens 2 Shapes im Selektionsbereich liegen:
' **********************************************************************
' Modul: Tabelle1 Typ: Klassenmodul Tabellenblatt
' **********************************************************************

Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If IsArray(Target) Then Call prcGroupShapes End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

' **********************************************************************
' Modul: Modul1 Typ: Standardmodul
' **********************************************************************

Option Explicit Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" ( _ ByRef pArray() As Any) As Long Public Sub prcGroupShapes() Dim objShape As Shape Dim objCell As Range Dim avntShpNames() As Variant Dim ialngIndex As Long For Each objShape In ActiveSheet.Shapes With objShape If .Visible Then For Each objCell In Selection If Not Intersect(.TopLeftCell, objCell) Is Nothing Then ialngIndex = ialngIndex + 1 Redim Preserve avntShpNames(ialngIndex - 1) As Variant avntShpNames(ialngIndex - 1) = .Name Exit For End If Next End If End With Next If Not CBool(SafeArrayGetDim(avntShpNames)) Then MsgBox "Es wurden keine Shapes selektiert.", vbExclamation Exit Sub ElseIf Ubound(avntShpNames) < 1 Then MsgBox "Mindestens 2 Shapes müssen im Selektionsbereich liegen", vbExclamation Exit Sub End If ActiveSheet.Shapes.Range(avntShpNames).Group End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß,

Anzeige
AW: shapes eines Bereiches gruppieren
03.07.2014 06:46:39
Beverly
Hi Stefan,
schreibe die Namen der Shapes zuerst in ein Array, sodass du dann alle zusammen gruppieren kannst
Sub ShapesGruppieren()
Dim shaShape As Shape
Dim lngShape As Long
ReDim arrShapes(0)
For Each shaShape In ActiveSheet.Shapes
If shaShape.Top > Selection.Top And shaShape.Left > Selection.Left And _
(shaShape.Top + shaShape.Height  0 Then ActiveSheet.Shapes.Range(arrShapes()).Group
End Sub


Anzeige
BESTEN DANK
03.07.2014 12:34:13
Stef26
Vielen Dank euch beiden.
Beide Funktionieren einwandfrei.
Vielen Dank für eure Unterstützung
Liebe Grüße
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Shapes in einem Bereich gruppieren in Excel


Schritt-für-Schritt-Anleitung

Um Shapes in einem bestimmten Bereich in Excel zu gruppieren, kannst Du das folgende VBA-Makro verwenden. Es wird vorausgesetzt, dass Du die Excel-Version 2010 oder höher verwendest.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub ShapesGruppieren()
       Dim shaShape As Shape
       Dim arrShapes() As String
       Dim lngShape As Long
       ReDim arrShapes(0)
    
       For Each shaShape In ActiveSheet.Shapes
           If Not Intersect(shaShape.TopLeftCell, Selection) Is Nothing Then
               lngShape = UBound(arrShapes) + 1
               ReDim Preserve arrShapes(lngShape)
               arrShapes(lngShape - 1) = shaShape.Name
           End If
       Next shaShape
    
       If lngShape > 1 Then
           ActiveSheet.Shapes.Range(arrShapes).Group
       Else
           MsgBox "Mindestens 2 Shapes müssen im Selektionsbereich liegen", vbExclamation
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Wähle den Bereich aus, der die Shapes enthält, und führe das Makro aus.


Häufige Fehler und Lösungen

  • Fehler: "Es wurden keine Shapes selektiert."

    • Lösung: Stelle sicher, dass Du einen gültigen Bereich mit mindestens zwei Shapes ausgewählt hast.
  • Fehler: "Mindestens 2 Shapes müssen im Selektionsbereich liegen."

    • Lösung: Überprüfe, ob tatsächlich mindestens zwei Shapes im gewählten Bereich vorhanden sind.

Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du die Shapes auch manuell gruppieren:

  1. Halte die CTRL-Taste gedrückt und klicke auf die Shapes, die Du gruppieren möchtest.
  2. Rechtsklicke auf eine der ausgewählten Shapes.
  3. Wähle im Kontextmenü die Option Gruppieren.

Praktische Beispiele

  1. Makro zur Gruppierung von Shapes:

    • Das oben gezeigte Makro gruppiert alle Shapes, die sich in dem ausgewählten Bereich befinden.
  2. Manuelle Gruppierung:

    • Wähle mehrere Formen aus, indem Du CTRL gedrückt hältst, und gruppiere sie dann über das Kontextmenü.

Tipps für Profis

  • Nutze die Worksheet_SelectionChange-Ereignisprozedur, um das Gruppieren automatisiert auszulösen.
  • Achte darauf, dass die Shapes gut sichtbar sind, da unsichtbare Shapes nicht gruppiert werden können.
  • Es ist hilfreich, vor der Gruppierung die Shapes zu benennen, um sie später leichter wiederzufinden.

FAQ: Häufige Fragen

1. Wie kann ich Shapes nach dem Gruppieren wieder entgruppieren?
Rechtsklicke auf die gruppierten Shapes und wähle Gruppierung > Gruppierung aufheben.

2. Funktioniert das Makro auch in Excel Online?
Leider funktioniert VBA nicht in Excel Online. Du kannst diese Methode nur in der Desktop-Version von Excel verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige