Hallo Christian,
mit For Each gehtst du ALLE Shapes durch. Wenn du dein Firmenlogo davon ausschließen willst, musst du dessen Namen kennen, bzw. vergeben. Das geht am besten indem du das Shape markierst und dem Namensfeld links neben der Formelleiste einen neuen Namen zuweist.
zu 1:
For Each sh In .Shapes
If sh.Name <> "Firmenlogo" Then sh.Delete
Next
zu 2:
Nein kannst du leider nicht. Wenn du ein Shape verschiebst, kann es durchaus passieren, dass du dabei versehentlich die Größe änderst. In dem Fall musst du die im Nachhinein durch ein Makro wiederherstellen, wo du die gewünschten Größenangaben drin speicherst.
With ActiveSheet.Shapes("Bild1")
.Width = sngWidth
.Height = sngHeight
End With
Wenn Width un Height immer gleich sind, kannst du das auch in eine For Each-Schleife legen:
For Each sh In .Shapes
If sh.Name <> "Firmenlogo" Then
sh.Width = sngWidth
sh.Height = sngHeight
End if
Next sh
Wenn du die endgültige Zielposition deiner Shapes erreicht hast, empfehle ich dir das Blatt zu schützen. Damit verhinderst du weiteres verschieben sowie ungewollte Größenänderungen.
Gruß Mr. K.
|