Grafiken in Excel VBA kopieren und deselectieren
Schritt-für-Schritt-Anleitung
Um Grafiken in VBA zu kopieren und anschließend zu deselectieren, kannst du den folgenden Code verwenden. Dieser kopiert ein ausgewähltes Bild in ein anderes Blatt und sorgt dafür, dass nach der Ausführung beide Grafiken nicht mehr selektiert sind.
Option Explicit
Sub BildKopieren()
On Error GoTo hell
If TypeName(Selection) = "Picture" Then
With Worksheets("Tabelle2")
Selection.Copy
.Paste
.Shapes(.Shapes.Count).Top = Selection.Top
.Shapes(.Shapes.Count).Left = Selection.Left
End With
' Deselect both shapes
ActiveSheet.Shapes.Range(Array("Picture 1", "Picture 2")).Select
Selection.ShapeRange.Deselect
Else
MsgBox "Erst ein Bild markieren, dann Button klicken", vbExclamation
End If
hell:
If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
End Sub
In diesem Code wird Selection.ShapeRange.Deselect
verwendet, um die Auswahl der Grafiken aufzuheben.
Häufige Fehler und Lösungen
-
Fehler: "Erst ein Bild markieren, dann Button klicken"
- Lösung: Stelle sicher, dass du tatsächlich ein Bild ausgewählt hast, bevor du den Button drückst.
-
Fehler: Die Grafiken bleiben selektiert
- Lösung: Verwende die
Deselect
-Methode nach dem Kopieren, um die Auswahl aufzuheben.
Alternative Methoden
Es gibt verschiedene Methoden, um Grafiken in Excel VBA zu bearbeiten:
-
Verwendung von ActiveShape
:
Du kannst auch die ActiveShape
-Eigenschaft nutzen, um direkt auf das aktive Bild zuzugreifen und es zu manipulieren.
-
Benutze Select
und Unselect
:
Manchmal ist es notwendig, zuerst die Grafiken zu selektieren und dann die Unselect
-Methode zu verwenden.
ActiveSheet.Shapes(1).Select
Selection.Unselect
Praktische Beispiele
Hier ist ein einfaches Beispiel, um eine Grafik zu kopieren und zu deselectieren. Wenn du mehrere Grafiken hast, kannst du sie in einem Array angeben:
Sub KopiereUndDeselect()
Dim shapeArray As Variant
shapeArray = Array("Bild1", "Bild2")
' Kopiere die Bilder
For Each shapeName In shapeArray
ActiveSheet.Shapes(shapeName).Copy
Worksheets("Zielblatt").Paste
Next shapeName
' Deselect
ActiveSheet.Shapes.Range(shapeArray).Select
Selection.Unselect
End Sub
Tipps für Profis
- Nutze
Option Explicit
: Immer am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
- Fehlerbehandlung einbauen: Verwende
On Error
-Anweisungen, um unerwartete Fehler abzufangen und die Programmabläufe stabiler zu gestalten.
- Intellisense verwenden: Nutze die Intellisense-Funktion in VBA, um dir bei der Eingabe von Befehlen zu helfen.
FAQ: Häufige Fragen
1. Wie kann ich alle Grafiken in einem Arbeitsblatt deselectieren?
Du kannst eine Schleife verwenden, um durch alle Shapes zu iterieren und sie zu deselectieren.
2. Gibt es eine Möglichkeit, mehrere Shapes gleichzeitig zu kopieren?
Ja, du kannst die Shapes.Range
-Methode verwenden, um mehrere Shapes in einem Array zu kopieren und sie dann zu manipulieren.