Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Shapes & Bereich löschen & Einfügen

Shapes & Bereich löschen & Einfügen
18.03.2008 09:58:53
Heinz
Hallo Leute
Ich möchte gerne alles von den Bereich "Vorschlag" H41:H52 löschen,es sind auch Shapes vorhanden.
Die Shapes und den Bereich von "Material-Nummern" H2:V12 in "Vorschlag"H41 einfügen.
Mittels Recorder komme ich leider nicht weiter.
Könnte mir bitte jemand weiterhelfen.
Gruß Heinz
Sheets("Vorlage").Shapes.Range("H41:N52").Delete
Sheets("Vorlage").Range("H41:N51").ClearContents
Sheets("Material-Nummern").Range Sheets("Vorlage")("H2:V12").Copy

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes & Bereich löschen & Einfügen
18.03.2008 10:36:22
Heinz
Anhang:
Es sollten bitte auch die Rahmen in den Ausgewählten Bereich gelöscht werden.
Gruß Heinz

AW: Shapes & Bereich löschen & Einfügen
18.03.2008 11:50:08
fcs
Hallo Heinz,
das war jetzt doch etwas komplizierter als erwartet. Hier meine Lösung
Gruß
Franz

Sub aaaTest()
Dim wsVor As Worksheet, wsMatNr As Worksheet, ShapeNamen() As Variant, iI As Long
Dim BereichMat As Range, BereichVor As Range, element As Shape
Set wsVor = Worksheets("Vorschlag")
Set wsMatNr = Worksheets("Material-Nummern")
With wsVor
Set BereichVor = .Range(.Cells(41, 8), .Cells(51, 14)) 'H41:N51
BereichVor.Clear 'Inhalte und Formate im Bereich löschen
'Shapes löschen, die mit Bereich überlappen
For Each element In .Shapes
If Not Intersect(.Range(element.TopLeftCell, element.BottomRightCell), _
BereichVor) Is Nothing Then
element.Delete
End If
Next
End With
With wsMatNr
Set BereichMat = .Range(.Cells(2, 8), .Cells(12, 22)) 'H2:V12
'Shapenamen merken, die mit dem Bereich überlappen
For Each element In .Shapes
If element.Placement = xlFreeFloating Then 'Element ist nicht an Zelle gebunden
If Not Intersect(.Range(element.TopLeftCell, element.BottomRightCell), _
BereichMat) Is Nothing Then
iI = iI + 1
ReDim Preserve ShapeNamen(1 To iI)
ShapeNamen(iI) = element.Name
End If
End If
Next
'Zellen + zellgebundene Shapes kopieren
BereichMat.Copy Destination:=BereichVor.Range("a1")
If iI > 0 Then
'gemerkte Shapes kopieren
For iI = 1 To UBound(ShapeNamen)
LeftDiff = BereichMat.Left - .Shapes(ShapeNamen(iI)).Left
TopDiff = BereichMat.Top - .Shapes(ShapeNamen(iI)).Top
.Shapes(ShapeNamen(iI)).Copy
wsVor.Paste
wsVor.Shapes(wsVor.Shapes.Count).Top = BereichVor.Top - TopDiff
wsVor.Shapes(wsVor.Shapes.Count).Left = BereichVor.Left - LeftDiff
Next
End If
End With
wsVor.Activate
BereichVor.Range("a1").Select
End Sub


Anzeige
AW: Shapes & Bereich löschen & Einfügen
18.03.2008 13:26:24
Heinz
Hallo Franz
Super Danke.
Habe nur mehr 2 Variable Devinieren müssen. Dim LeftDiff As Range + Dim TopDiff As Range
Läuft jetzt SUPER.
Recht herzlichen Dank für Deine Großartige Mühe.
Gruß Heinz
Option Explicit

Sub aaaTest()
Dim wsVor As Worksheet, wsMatNr As Worksheet, ShapeNamen() As Variant, iI As Long
Dim BereichMat As Range, BereichVor As Range, element As Shape
Dim LeftDiff As Range
Dim TopDiff As Range
Set wsVor = Worksheets("Vorlage")
Set wsMatNr = Worksheets("Material-Nummern")
With wsVor
Set BereichVor = .Range(.Cells(41, 8), .Cells(51, 14)) 'H41:N51
BereichVor.Clear 'Inhalte und Formate im Bereich löschen
'Shapes löschen, die mit Bereich überlappen
For Each element In .Shapes
If Not Intersect(.Range(element.TopLeftCell, element.BottomRightCell), _
BereichVor) Is Nothing Then
element.Delete
End If
Next
End With
With wsMatNr
Set BereichMat = .Range(.Cells(2, 16), .Cells(12, 22)) 'P2:V12
'Shapenamen merken, die mit dem Bereich überlappen
For Each element In .Shapes
If element.Placement = xlFreeFloating Then 'Element ist nicht an Zelle gebunden
If Not Intersect(.Range(element.TopLeftCell, element.BottomRightCell), _
BereichMat) Is Nothing Then
iI = iI + 1
ReDim Preserve ShapeNamen(1 To iI)
ShapeNamen(iI) = element.Name
End If
End If
Next
'Zellen + zellgebundene Shapes kopieren
BereichMat.Copy Destination:=BereichVor.Range("a1")
If iI > 0 Then
'gemerkte Shapes kopieren
For iI = 1 To UBound(ShapeNamen)
LeftDiff = BereichMat.Left - .Shapes(ShapeNamen(iI)).Left
TopDiff = BereichMat.Top - .Shapes(ShapeNamen(iI)).Top
.Shapes(ShapeNamen(iI)).Copy
wsVor.Paste
wsVor.Shapes(wsVor.Shapes.Count).Top = BereichVor.Top - TopDiff
wsVor.Shapes(wsVor.Shapes.Count).Left = BereichVor.Left - LeftDiff
Next
End If
End With
wsVor.Activate
BereichVor.Range("a1").Select
End Sub


Anzeige
AW: Shapes & Bereich löschen & Einfügen
18.03.2008 14:05:00
fcs
Hallo Heinz,
deklariere diese beiden Variablen bitte als Double, auch wenn mit Range funktioniert,
Nur der Ordnung halber.
Gruß
Franz

AW: Shapes & Bereich löschen & Einfügen
18.03.2008 17:46:56
Heinz
Hallo Franz
Werde Deinen Rat befolgen.
Nochmals Danke
Gruß Heinz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige