Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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
Inhaltsverzeichnis

Gruppierung

Gruppierung
Beni
Guten Abend zusammen
Obwohl ich schon zwei Versuche bei euch gemacht habe, ist mein Problem noch nicht gelöst.
In der angehängten Datei ist ein Shape, welches aus diversen Elementen Gruppiert ist.
Beim Anklicken wird das Bild auf der Seite Zeichnen in B6 eingefügt. Die nächsten Klicks fügen das Bild sauber neben die jeweils bestehenden ein. In Excel 03 möchte ich gerne die Makros vom jeweils aktiven Element entfernen. Lösungen habe ich von euch schon erhalten. Diese entfernen aber alle Makros der ganzen Seite und nicht nur das des jeweils aktiven Element. Dies ist Problemchen Nr. 1
Nr- 2 scheint schwieriger bis unlösbar: wird die Datei in xl07 gebraucht, wird jeweils nur ein Element der Gruppierung in B6 eingefügt und nicht wie in xl03 das ganze Bild.
Obwohl das nicht eine direkte Excelfrage scheint, hängt doch eine ganze Kalkulation hinter diesen Gruppierungen.
Für Hilfe währe ich sehr dankbar
3 Beiträge "Gruppieren" und Datei anhängen
18.08.2009 21:50:32
NoNet
Hallo Beni,
meinst Du mit
Obwohl ich schon zwei Versuche bei euch gemacht habe

den 3-fachen Post Deiner Frage innerhalb 2 Sekunden ;-) ? - Deine ENTER-Taste klemmt wohl, zumindest sollte man zunächst einmal diese 3 Beiträge "gruppieren" :-)
Im Ernst : In Deinem Beitrag fehlt die erwähnte "angehängte Datei" - lade diese doch bitte nochmal hoch (und poste den Link zur Datei !), dann kann man Deine Frage wohl besser nachvollziehen.
Gruß, NoNet
AW: 3 Beiträge "Gruppieren" und Datei anhängen
18.08.2009 21:54:40
Beni
Sorry NoNet und an alle, da hat wirklich etwas geklemmt.
https://www.herber.de/bbs/user/63910.xls
Vielen Dank
Anzeige
"Gruppieren" und Datei anhängen
19.08.2009 09:06:56
Beni
Guten Abend zusammen
Obwohl ich schon zwei Versuche bei euch gemacht habe, ist mein Problem noch nicht gelöst.
In der angehängten Datei ist ein Shape, welches aus diversen Elementen Gruppiert ist.
Beim Anklicken wird das Bild auf der Seite Zeichnen in B6 eingefügt. Die nächsten Klicks fügen das Bild sauber neben die jeweils bestehenden ein. In Excel 03 möchte ich gerne die Makros vom jeweils aktiven Element entfernen. Lösungen habe ich von euch schon erhalten. Diese entfernen aber alle Makros der ganzen Seite und nicht nur das des jeweils aktiven Element. Dies ist Problemchen Nr. 1
Nr- 2 scheint schwieriger bis unlösbar: wird die Datei in xl07 gebraucht, wird jeweils nur ein Element der Gruppierung in B6 eingefügt und nicht wie in xl03 das ganze Bild.
Obwohl das nicht eine direkte Excelfrage scheint, hängt doch eine ganze Kalkulation hinter diesen Gruppierungen. Für Hilfe währe ich sehr dankbar und nochmals Sorry für den dreifachpost.
www.herber.de/bbs/user/63910.xls
Anzeige
lösbar: Nr- 2 (Nr 1 noch offen)
19.08.2009 11:37:11
MichaV
Hallo,
hab mich vorher noch nicht damit beschäftigt, kann also nicht 10%ig richtig sein was ich jetzt schreibe. Es scheint als ob XL2007 gruppierte Shapes anders behandelt als die Versionen darunter. Dummerweise ist das auch so wenn eine in XL2007 gespeicherte Version (Kompatibilitätsmodus) in einer älteren Version geöffnet wird. Das hier funzt bei mir (ohne die Problemstellungen der anderen Threads zu kennen, ich rede nur vom kopieren der ganzen Gruppe) in XL2003, in XL2007 und in XL2003 nach dem Speichern in XL2007:
Sub BildAnfuegen(strC As String)
Dim sngT As Single, sngL As Single, sngH As Single, sngW As Single
Dim ii As Integer, bolOK As Boolean
Dim shShape As Shape
Dim shShapeInGroup As Shape
Dim bolFoundIt As Boolean
On Error Resume Next
If Application.Version  "12.0" Then
'kein XL 2007
With ActiveSheet.Shapes(Application.Caller)
sngH = .Height
sngW = .Width
.Copy
End With
End If
If Err.Number  0 Or Application.Version = "12.0" Then
'wenn Shape nicht gruppiert, passiert in XL2007 und in allen Versionen wenn Datei in XL2007  _
gespeichert
For Each shShape In ActiveSheet.Shapes
'alle Shapes durchgehen
If shShape.Type = msoGroup Then
'wenn Shape gruppiert
For Each shShapeInGroup In shShape.GroupItems
'Alle Mitglieder der Gruppe durchgehen
If shShapeInGroup.Name = Application.Caller Then
'Wenn auf dieses Mitglied geklickt wurde wissen wir auf welche Gruppe geklickt  _
wurde
sngH = shShape.Height
sngW = shShape.Width
shShape.Copy
bolFoundIt = True
Exit For: Exit For
End If
Next
End If
If bolFoundIt Then Exit For
Next
On Error GoTo 0
End If
With Worksheets("Zeichnung")               ' anpassen
... ab hier der unter dieser Zeile bereits vorhandene Code
End Sub
Gruß- Micha
Anzeige
AW: lösbar, korrigiert: Nr- 2 (Nr 1 noch offen)
19.08.2009 11:44:12
MichaV

If Err.Number  0 Or Application.Version = "12.0" Then
on error goto 0  '

(Nr 1 noch offen) Nr.2 läuft, Danke Micha
19.08.2009 18:45:48
Beni
Vielen herzlichen Dank für Dein Meisterwerk. Läuft wirklich prima.
AW: (Nr 1 noch offen) Nr.2 Danke für die Rückmeldu
20.08.2009 12:49:14
MichaV
Hallo, fein, danke für die Rückmeldung. Wenn Du mir nochmal idiotensicher erklærst was Du mit Deiner 1. Frage vorhast kann ich mir das auch nochmal anschauen.
Gruss- Micha
AW: (Nr 1 noch offen) Nr.2 Danke für die Rückmeldu
21.08.2009 08:23:31
Beni
Hallo Micha
Danke für die dargebotene Hand
Nicht dir sollte man etwas "Id...sicher" etwas erklären sondern eher mir!!! Der Depp sitz nämlich hier!
Du hast mir sehr viel geholfen mit deiner Ergänzung zum bestehenden Macro, welches ich nochmals E.Gier verdanken möchte. Auch mit dem besten Willen kann ich die ganze Prozedur nicht entziffern und muss einfach zur Kentniss nehmen, das es super läuft. Aber irgendetwas ändern würde nicht drin liegen.
also versuch ich nochmals die Frage 1 zu definieren:
Nachdem ausführen des Macro ist die Gruppierung auf das nächste Tabellenblatt kopiert. Die Gruppierung enthält aber nach wie vor das Macro. Und genau dieses sollte entfernt werden. Bei einem normalen Shape funktioniert das im Code enthaltene ".Shapes(.Shapes.Count).OnAction = "". Bei einer Gruppierung haut das in Excel 03 nicht. Nachdem ich deinen Code integriert habe kam das Staunen, in Excel 03 ist das Macro noch vorhanden, Excel 07 entfernt das Macro. So gesehen nur noch 50% meiner Frage offen.
In 03 habe ich mit nachfolgendem Code das Macro entfernt, aber der entfernt nicht nur den Code der aktuell eigfügten Gruppierung, sondern alle Macros auf dem Tabellenblatt.
Sub MakroEntfernen()
'Entfernt verknüpftes Makro für alle shapes des aktiven Tabellenblattes
Dim sh As Shape
Dim gefunden As Boolean
Do
gefunden = False
Sheets("Zeichnung").Select
For Each sh In ActiveSheet.Shapes
If InStr(1, sh.Name, "Group")  0 Then
'Gruppierung aufheben
sh.Ungroup
gefunden = True
End If
Next
If gefunden = False Then Exit Do
Loop
For Each sh In ActiveSheet.Shapes
sh.OnAction = ""
Next
Call Alle_Gruppieren  ' Nach dem entfernen der Macros sind die Gruppierungen aufgelöst und mü _
ssen wieder gruppiert werden
Sheets("Typen").Select
End Sub
Ich hoffe dass ich das in die Nähe einer Fragestellung gebracht habe.
Wenn ich Dich noch etwas Fragen dürfte:
Eine Gruppierung in Excel 07 kopieren und einfügen, ohne jegliche Kollisionsfunktion wie vorhanden,
einfachster Code der in 03 und 07 läuft?
Anzeige
AW: Prozeduren (Makros) zu Shapes löschen
20.08.2009 13:30:15
fcs
llo Beni,
für nicht gruppierte Shapes geht folgende Lösung, um das einem Shape zugeordnete Makro zu löschen.
Voraussetzung: Makros beinden sich in der gleichen Arbeitsmappe wie die Shape-Objekt.
Es können auch mehrere selektierte Shapes gleichzeitig bearbeitet werden.
Gruß
Franz
'Erstellt unter Excel 2003
'ggf. im VBA-Editor den Verweis setzen auf _
Microsoft Visual Basic for Application Extensibility ... _
Microsoft Forms x.y Object Library
Sub ShapeMakroWeg()
Dim objShape As Object, shShape As Shape
Dim strProcedure As String
On Error GoTo Fehler
Set objShape = Selection
If Not objShape Is Nothing Then
For Each shShape In objShape.ShapeRange
With shShape
strProcedure = .OnAction
'  MsgBox strProcedure
If strProcedure  "" Then
'Dateinamen vom Prozedurnamen abtrennen
strProcedure = Mid(strProcedure, InStr(1, strProcedure, "!") + 1)
'Makrozuweisung zum Shape löschen
.OnAction = ""
ProcedureWeg (strProcedure)
End If
End With
Next
End If
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub
Sub ProcedureWeg(strProcedure As String)
'strProcedur = Name der zu löschenden Prozedur
Dim objVB_Comp As Object
Dim Zeile As Long, Zeilen As Long
Dim objProcedureKind As VBIDE.vbext_ProcKind
On Error GoTo Fehler
'  MsgBox strProcedure
With ActiveWorkbook.VBProject
'VBA-Komponenten durchsuchen
For Each objVB_Comp In .VBComponents
With objVB_Comp.CodeModule
'Prüfen, ob Procedur im Modul und Startzeile ermitteln
Zeile = 1
If .Find(Target:="Sub " & strProcedure, StartLine:=Zeile, StartColumn:=1, _
EndLine:=.CountOfLines, EndColumn:=80, WholeWord:=False) = True Then
'Zeile mit Prozedurbeginn suchen
If MsgBox("Prozedur """ & strProcedure & """ wirklich löschen?", _
vbQuestion + vbDefaultButton2 + vbOKCancel, _
"Makro zugewiesen zu Shape löschen") = vbCancel Then Exit For
'Anzahl Zeilen der Prozedur
objProcedureKind = vbext_pk_Proc
Zeilen = .ProcCountLines(ProcName:=strProcedure, ProcKind:=objProcedureKind)
'Code Zeilen der Prozedur löschen
.DeleteLines Zeile, Zeilen - 1
Exit For
End If
End With
Next
End With
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub

Anzeige
AW: Prozeduren (Makros) zu Shapes löschen
20.08.2009 17:34:16
Beni
Guten Abend Franz
Vielen Dank für deine Arbeit. Bei Shapes ist es auch so gegangen: .Shapes(.Shapes.Count).OnAction = ""
Ich versuche mit deinen Vorschlägen zu Arbeiten, nur sind es wirklich nicht einfache shapes sondern Gruppierte Bilder

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige