VBA: Zwischenablage und Grafiken

24/01/2012 - 19:32 von Hans Alborg | Report spam
Hallo Leute,

Ich habe auf einem Blatt eine große Grafik (Bildschirmgröße).
Ich möchte per VBA diese Grafik löschen, und eine neue aus der ZA einfügen.

Dabei möchte ich ein paar Sicherheiten haben.

Meine Fragen: wie geht das?...
a - ist was in der Zwischenablage? Sonst Exit Sub.
b - ist das wirklich eine Grafik? Sonst Exit Sub.
c - Ziehe die Grafik auf die aktuelle Bildschirmgröße.

Hier mein bisheriger Code:

Private Sub CommandButton2_Click()
Dim xShape As Shape
' Zwischenablage testen
If Application.CutCopyMode = False Then ' Zwischenabl. leer dann nix tun
MsgBox "Zwischenablage ist leer!": Exit Sub
End If
' alte Gfx löschen
On Error GoTo ende
For Each xShape In ActiveSheet.Shapes
xShape.Delete
Next xShape
Exit Sub
ende:
Exit Sub
' neue Gfx laden
Sheets("Wochenplan").Visible = True
Sheets("Wochenplan").Select
Sheets("Wochenplan").Range("A1").Select
ActiveSheet.Paste
With Selection
.Top = 100
.Left = 300
End With
Range("A1").Select
End Sub

Das "Zwischenablage testen" funktioniert so nicht, und prüft diese auch
nicht auf "Grafik".
Das Löschen der alten Grafik braucht eigentlich keine Schleife, da es nur
eine Gfx gibt. Da werd ich dann weitermachen, wenn die ZA- Abfrage geht.
Das Laden der neuen Grafik klappt beim Testen, aber das stretchen
(Top/Left...) muß ich dann noch herausbekommen.

Das Ganze steht z.Zt. als Routine unter einem Button einer Userform, nicht
im Makrobereich.
Das Blatt selbst ist ausgeblendet und wird für die Aktion kurz hervorgeholt.

Also: Fragen a,b,c. Weiß einer was?

Danke,

Hans
 

Lesen sie die antworten

#1 Hans Alborg
24/01/2012 - 22:24 | Warnen spam
Hi,

me...
Meine Fragen: wie geht das?...
a - ist was in der Zwischenablage? Sonst Exit Sub.
b - ist das wirklich eine Grafik? Sonst Exit Sub.
c - Ziehe die Grafik auf die aktuelle Bildschirmgröße.



"c" hat sich erledigt. Mit
MBreite = GetSystemMetrics(YSCREEN)
MHoehe = GetSystemMetrics(XSCREEN)

erfahre ich die Monitorauflösung. Dann, wenn Z-Ablage nicht leer ist und
keinen Text enthàlt (gmpf)...

ActiveSheet.Paste
With Selection
.Top = 0
.Left = 0
.Width = SBreite - 400
.Height = SHoehe - 400
End With

ist dieser Punkt gelöst.

"a,b": bisher kann ich nur feststellen: leer oder Text. Ist eine Grafik in
der Zwischenablage immer eine Bitmap?

Hans

Ähnliche fragen