Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ActiveShape, Shape.deselect

Forumthread: ActiveShape, Shape.deselect

ActiveShape, Shape.deselect
Reinhard
Hallo Wissende,
ich habe für jmdn. in einem anderen Forum den nachfolgenden Code gebastelt. Der funktioniert auch.
Er muß nur in Blatt1 eine Grafik markieren, den Button klicken und sie erscheint in Blatt2 an der gleichen Position wie in Blatt1.
Nun sind aber "danach" beide Grafiken selektiert. Um beide Gafiken zu deselectieren kenne ich nur daß ich in jedem Blatt eine Zelle aktiviern/selektieren muß.
In der XL 2000 Hilfe kann man zwar bei Index "ActiveForm" sehen/auswählen, aber als Ergebnis kommt da irgendwas mit ner For-Schleife.
ActiveForm.deselect, am besten AvtiveShape.deselect fände ich schicker als Range("A2").select
Genauso fände ich es besser anstatt
Selection.copy
Activeshape.Copy
zu schreiben.
Okay, mein Code funktioniert ja. Ich formuliere mal meine eigentliche Frage so:
Wie würdet ihr das schreiben sodaß nach der Prozedur beide Grafiken nicht mehr selektiert sind.
Wie gesagt, eine Zelle selektieren kenne ich.
Wie auch immer, ein schönes WE @alle
Gruß
Reinhard
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
Else
MsgBox "Erste ein Bild markieren dann Button klicken", vbExclamation
End If
hell:
If Err.Number  0 Then MsgBox Err.Number & vbCrLf & Err.Description
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
.deselect gibt's nicht, da hilft nur .Select! o.T.
07.01.2012 20:07:07
Josef
« Gruß Sepp »

OT Frage zu seltsamen Einträgen in der Vba-Hilfe
07.01.2012 21:34:38
Reinhard
Hallo Sepp,
danke für die Antwort, gibt da nix, okay, dann bleibt der Code so.
In der XL 2000 Vba-Hilfe [sehr leider in der XL 2007 Hilfe nicht mehr :-( ] kann man
ja z.b. Active eingeben dann sieht man untendrunter alles was mit active* beginnt.
Wie z.B. ActiveForm in dem Fall.
Aber das ist kein Einzelfall, da gibt es schon nicht wenige Einträge, also "Codewörter",
die gibt es irgendwie nicht mehr.
Oder wie bei ActiveForm wird dann wenn man das auswählt was völlig anderes erklärt.
Ich sah auch schon im deutschen XL Erklärungen in Englisch.
Gut, mir ist klar MS hat da keine Leute drangesetzt die alles durchgehenn und die ganze Hilfe
auf Fehler überprüfen.
Deshalb frage ich nicht nach.
Ich frage nach, woher stammen denn diese "Fehleinträge"?
Die muß doch einer reingeschrieben haben.
Aus Excel4 nicht, da war die Makrosprache deutsch und Vba gabs noch nicht.
Aus Excel5?
Weißt du da was?
Btw. zu XL ab 2007, wie machst du das eigentlich, wenn du einen Vbabefehl einstzen möchtest, du weißt genau daß es den gibt aber du weißt die genaue Schreibweise des Befehls nicht.
Z.B. du willst auf die Eigenschaften eines Workbooks zugreifen und du weißt noch daß da
der Befehl mit Builtin* anfängt.
Da nutzt dir doch da die Hilfe in XL2007 nix, oder mache ich da was falsch?
Suchst du da im Objektkatalog, über Intellisense oder wie machst du das.
Gruß ^ Danke
Reinhard
Anzeige
AW: OT Frage zu seltsamen Einträgen in der Vba-Hilfe
07.01.2012 21:45:43
Josef

Hallo Reinhard,
Objektkatalog ist gut, oder eine Objektvariable initialisieren und in Lokalfenster ansehen (obwohl auch da manche Eigenschaften unterschlagen werden. Und dann natürlich "Tante Google" die hilft meist weiter.
Bei xl2010 ist die Hilfe wieder besser geworden.

« Gruß Sepp »

Anzeige
AW: OT Frage zu seltsamen Einträgen in der Vba-Hilfe
07.01.2012 22:27:55
Reinhard
Hallo Sepp,
::::Objektkatalog ist gut,::::
ja, du und andere Profis/sehr gute erzählen davon, mein level stimmt schon,
ich blick da nicht durch bei F2. Naja, irgendwann...
::::oder eine Objektvariable initialisieren und in Lokalfenster ansehen (obwohl auch da manche Eigenschaften unterschlagen werden.::::
Das kenne ich durch Glück, also durch eine Information von einem von hier.
Set benutzen und dann im Lokalfenster rumklicken bis man z.B. Default* liest/sieht.
Ich hatte hier schon nachgefragt ob man denn nicht das was man im Lokalfenster sieht
von mir aus in ein Blatt schreiben könnte, also den ganzen Baum, damit man da nach Begriffen suchen könnte.
Die Antwort(en) sagten leider nein, geht nicht. *seufz*
Aber egal, schön ist daß man via Lokalfenster überhaupt auf eine Lösung kommen kann.
Daß da bestimmte Eigenschaften unterschlagen werden ist natürlich ein Riesenmist :-(
Und dann natürlich "Tante Google" die hilft meist weiter.
Ja, das stimmt, als Suchbegriff Builtin eingeben, Treffer ansehen, ggfs die Suche verfeinern durch Zusatzsuchwörter, dann kommt man schon zum Ziel, in dem Beispielfall wollte man ja nur die korrekte Schreibweise von BuiltinDocumentProperties.
Bei xl2010 ist die Hilfe wieder besser geworden.
Das klingt gut.
Ich hatte mal eine Zeitlang kein Internet zu Hause. In dem Internetcafe wo ich dann war hatte jmd. dort eine XL 2002 Version aufgespielt. Aber OHNE die Vba-Hilfe.
Wenn ich dann von dem Cafe aus versucht habe Anfragen in Excelforen zu beantworten da habe ich gemerkt wie sehr ich von der Vba-Hilfe abhängig bin.
Jetzt nicht sowas wie die Parameter für Sort, da zeichne ich ein Makro auf und fertig, dann kenne ich sie.
Andre Dinge halt und jedes zu ergooglen ist mühsam denn egal wie man sucht, man erhält viel zu viel Treffer :-(
Gruß
Reinhard
Anzeige
;
Anzeige

Infobox / Tutorial

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

  1. 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.
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige