Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: shape deaktivieren

shape deaktivieren
12.10.2015 18:50:03
Tobias
Hallo zusammen...
folgendes Problem.
Da es in Excel 2010 kein VBA-Befehl gibt um Freihandanmerkungen zu löschen habe ich
versucht es auf einem anderen Weg zu versuchen.
Ich habe ein Tabellenblatt mit mehreren Shapes, die mir als Befehlsbuttons dienen.
Ich habe unten im Tabellenblatt ein Unterschriftenfeld.
Da ich Excel auf einem Windows-Tablet nutze kann ich über einen Digipen Freihandanmerkungen anfügen.
In meinem Fall möchte ich über Freihandanmerkungen unten im Tabellenblatt unterschreiben lassen.
Das funktioniert ja auch tadellos.
Nach der Unterschrift möchte ich das Formular drucken.
Nach dem Druck möchte ich die Freihand-Unterschrift wieder über einen Button(VBA-Befehl) löschen. Bzw. möchte ich alle Freihandanmerkungen löschen.
Hab nun versucht über den Befehl ActiveSheet.SelectAll alle Shapes zu markieren.
Nun möchte ich alle Shapes deaktivieren bis auf die Freihandanmerkungen...und dann nur die Freihandanmerkungen über Selection.Delete löschen.
Vielleicht habt ihr ja die zündende Idee....
Dankeschön...:-)

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: shape deaktivieren
12.10.2015 19:03:06
Michael
Hi Tobias,
sieh Dir mal das an:
Sub grafiktyp()
Dim i As Long
For i = 1 To Shapes.Count
MsgBox Shapes(i).Name & " " & Shapes(i).Type
Next
End Sub

Due bekommst zu jeder Grafik den "Type" geliefert und kannst mit Name und/oder Typ unterscheiden, ob es sich um ein Bild oder eine Schaltfläche handelt, bzw. was gelöscht werden soll.
Eine Alternative wäre:
Sub grafiktypEach()
Dim shBild As Shape
For Each shBild In Shapes
MsgBox shBild.Name & " " & shBild.Type
' if shBild.Name = "Bla" then shBild.delete
Next
End Sub

...das liest sich schöner.
Schöne Grüße,
Michael

Anzeige
AW: shape deaktivieren
12.10.2015 19:23:44
Tobias
Hallo Michael,
dankeschön für deine schnelle Antwort.
Leider gibt mir der Debugger folgende Fehlermeldung:
Laufzeitfehler 424
Objekt erforderlich
Grüße
Tobias

AW: shape deaktivieren
12.10.2015 19:05:23
ransi
Hallo,
Schau malob dir das weiter hilft:
Option Explicit


Sub machs()
    Dim sh
    For Each sh In Tabelle1.Shapes
        If sh.AutoShapeType = msoShapeNotPrimitive Then sh.Delete
    Next
End Sub



ransi

Anzeige
AW: shape deaktivieren
12.10.2015 19:31:49
Tobias
Hallo ransi,
hab den code zuhause bereits ausprobiert.
ich glaub dein vba-code ist ist auf einer ganz heißen spur.
probiere es morgen in der arbeit nochmals aus...aber ich denke, das müsste so klappen.
Das wäre der Hammer!!!!
Vielen Dank schon mal für deine schnelle Antwort!!!!
Gruß
Tobias

Anzeige
AW: shape deaktivieren
13.10.2015 18:04:21
Tobias
Hallo ransi,
ich nochmal...:-)
Hab deinen Programmcode mit der Erfolg in der Arbeit getestet.
Hab ihn noch ein bisschen anpassen und umschreiben müssen...aber funktioniert prima!!!
Herzlichen Dank!!!
War mir eine sehr große Hilfe
Viele Grüße
Tobias
;
Anzeige
Anzeige

Infobox / Tutorial

Shapes in Excel deaktivieren und löschen


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic-Editor: Drücke ALT + F11 in Excel, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (DeinDateiname)" und wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub shapesLoeschen()
        Dim sh As Shape
        For Each sh In ActiveSheet.Shapes
            If sh.AutoShapeType = msoShapeNotPrimitive Then
                sh.Delete
            End If
        Next sh
    End Sub
  4. Schließe den Visual Basic-Editor und kehre zurück zu deinem Excel-Arbeitsblatt.
  5. Führe das Makro aus: Drücke ALT + F8, wähle shapesLoeschen aus der Liste und klicke auf "Ausführen".

Dieser Code löscht alle Freihandanmerkungen, die du auf deinem Arbeitsblatt erstellt hast.


Häufige Fehler und Lösungen

  • Laufzeitfehler 424: Objekt erforderlich: Dieser Fehler tritt häufig auf, wenn das Objekt, das du ansprechen möchtest, nicht existiert. Stelle sicher, dass du das richtige Arbeitsblatt ausgewählt hast und dass Formen vorhanden sind.

  • Shapes werden nicht gelöscht: Überprüfe, ob der Typ der Shapes korrekt identifiziert wird. Manchmal können andere Shapes im Weg sein. Nutze den Debugger, um die Typen der Shapes anzuzeigen.


Alternative Methoden

Eine andere Methode, um spezifische Shapes zu löschen, ist die Verwendung des Type-Attributs. Hier ist ein Beispiel:

Sub loescheSpecificShapes()
    Dim i As Long
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        If ActiveSheet.Shapes(i).Type = msoFreeform Then
            ActiveSheet.Shapes(i).Delete
        End If
    Next i
End Sub

Dieser Code löscht nur Freihandformen.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit verschiedenen Shapes, darunter auch Freihandanmerkungen. Mit dem obigen Code kannst du gezielt nur die Freihandanmerkungen löschen, ohne andere Buttons oder Bilder zu entfernen.


Tipps für Profis

  • Verwende Option Explicit: Füge Option Explicit zu Beginn deines Codes hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft dir, Fehler zu vermeiden.

  • Teste deinen Code schrittweise: Nutze den Debugger, um deinen Code Schritt für Schritt auszuführen, damit du genau siehst, wo mögliche Fehler auftreten.


FAQ: Häufige Fragen

1. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe, ob die Shapes, die du löschen möchtest, tatsächlich auf dem aktiven Arbeitsblatt vorhanden sind. Manchmal kann es sein, dass du das falsche Arbeitsblatt ausgewählt hast.

2. Kann ich den Code anpassen, um nur bestimmte Shapes zu löschen?
Ja, du kannst die Bedingungen im Code anpassen, um nur Shapes mit bestimmten Namen oder Typen zu löschen. Verwende dazu die If-Anweisung im VBA-Code.

3. Funktioniert dieser Code auch in anderen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010 und neuer.

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