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

Bild löschen, wenn vorhanden

Forumthread: Bild löschen, wenn vorhanden

Bild löschen, wenn vorhanden
11.12.2003 18:14:32
Erwin
Hallo,
ich habe eine Mitglieder-Datei erstellt, in der auf Tab3 pers. Daten und ein Bild erscheint, wenn im Ordner Fotos eins gespeichert ist, ansonsten kommt der Text "kein Bild". Mit dem Code
Range("E7").Select
LW = "D:\Fotos\"
BildName = "SB1" & "_" & "SB2" 'Nachname_Vorname
BildDatei = LW & BildName & ".jpg"
If Dir(BildDatei) <> "" Then
ActiveSheet.Pictures.Insert(BildDatei).Select
Else
ActiveSheet.Range("E6").Value = "kein Bild"
End If
Range("A1").Select
klappt alles wunder bar. Nun möchte ich aber mit einem Button die Texteinträge und das Bild,wenn vorhanden,löschen können.
Habe dazu den Code geschrieben:
Private Sub CmdLöschen_Click()
Range("A6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
If Pictures.Count > 0 then Pictures.Delete
End
Das Problem ist, es löscht mir auch meine Schaltfläche! Ich möchte aber nur das Bild, das vorher eingefügt wurde, löschen!
Kann mir jemand helfen?
Wäre schön, Erwin
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bild löschen, wenn vorhanden
11.12.2003 18:24:21
K.Rola
Hallo,

was ist das für ein Bild, Pixelgrafik, Zeichnungsobjekt?

Gruß K.Rola
AW: Bild löschen, wenn vorhanden
11.12.2003 18:32:09
Erwin
Hallo,
es handelt sich um gescannte Bilder oder von der Digitalkamera, Pixelgrafik.
Erwin
AW: Bild löschen, wenn vorhanden
11.12.2003 18:43:12
K.Rola
Hallo,

Option Explicit

Sub Shape_löschen()
Dim Sh As Shape
For Each Sh In ActiveSheet.Shapes
If Sh.Type = 13 Then Sh.Delete
Next
End Sub


Gruß K.Rola
Anzeige
AW: Bild löschen, wenn vorhanden
11.12.2003 18:58:03
Erwin
Hallo K.Rola
Super, es funktioniert!
Danke dir, aber sag, was bedeutet Type=13?
Grüße v. Erwin
AW: Bild löschen, wenn vorhanden
11.12.2003 19:17:20
K.Rola
Hallo,

die Typen der verschiedenen Shapes findest du im Objektkatalog.

13 ist der Long- Wert der Konstanten msoPicture

Gruß K.Rola
;
Anzeige

Infobox / Tutorial

Bild löschen, wenn vorhanden


Schritt-für-Schritt-Anleitung

  1. Füge den Code für das Einfügen des Bildes ein: Stelle sicher, dass Du den folgenden Code in Deinem VBA-Editor in das entsprechende Modul eingefügt hast. Dieser Code überprüft, ob ein Bild vorhanden ist, und fügt es in die Excel-Tabelle ein.

    Range("E7").Select
    LW = "D:\Fotos\"
    BildName = "SB1" & "_" & "SB2" ' Nachname_Vorname
    BildDatei = LW & BildName & ".jpg"
    If Dir(BildDatei) <> "" Then
       ActiveSheet.Pictures.Insert(BildDatei).Select
    Else
       ActiveSheet.Range("E6").Value = "kein Bild"
    End If
  2. Erstelle den Löschen-Button: Füge einen Button in Deine Excel-Tabelle ein und weise ihm den folgenden Code zu, um das Bild zu löschen, ohne die Schaltfläche selbst zu entfernen.

    Private Sub CmdLöschen_Click()
       Range("A6").Select
       Range(Selection, Selection.End(xlToRight)).Select
       Range(Selection, Selection.End(xlDown)).Select
       Selection.ClearContents
       Dim Sh As Shape
       For Each Sh In ActiveSheet.Shapes
           If Sh.Type = 13 Then Sh.Delete
       Next
    End Sub
  3. Teste die Funktionalität: Überprüfe, ob der Button wie gewünscht funktioniert und nur das Bild löscht, während der Text und die Schaltfläche erhalten bleiben.


Häufige Fehler und Lösungen

  • Problem: Der Button löscht auch die Schaltfläche.

    • Lösung: Stelle sicher, dass Du den richtigen Typ des Shapes überprüfst. Der Code verwendet If Sh.Type = 13 Then Sh.Delete, was nur Bilder (Pixelgrafiken) löscht.
  • Problem: Bild wird nicht angezeigt, obwohl es vorhanden ist.

    • Lösung: Überprüfe den Pfad und den Dateinamen, um sicherzustellen, dass sie korrekt sind. Der Fehler "bild nicht vorhanden" tritt häufig auf, wenn der Pfad inkorrekt ist.

Alternative Methoden

Eine alternative Methode, um Bilder zu löschen, besteht darin, den Shapes-Objekt zu verwenden. Hier ist ein Beispielcode, der alle Bilder auf dem aktiven Blatt löscht:

Sub AlleBilderLöschen()
    Dim Sh As Shape
    For Each Sh In ActiveSheet.Shapes
        If Sh.Type = msoPicture Then Sh.Delete
    Next
End Sub

Diese Methode entfernt alle Pixelgrafiken auf dem Blatt und ist nützlich, wenn Du mehrere Bilder gleichzeitig löschen möchtest.


Praktische Beispiele

  1. Einfügen eines Bildes: Wenn Du einen Button zum Einfügen eines Bildes hast, könntest Du folgenden Code verwenden:

    Sub BildEinfügen()
       Dim BildDatei As String
       BildDatei = "D:\Fotos\deinBild.jpg"
       ActiveSheet.Pictures.Insert(BildDatei).Select
    End Sub
  2. Überprüfen und Löschen eines Bildes: Um ein Bild zu überprüfen und nur zu löschen, wenn es vorhanden ist:

    Sub BildLöschenFallsVorhanden()
       Dim BildDatei As String
       BildDatei = "D:\Fotos\deinBild.jpg"
       If Dir(BildDatei) <> "" Then
           Dim Sh As Shape
           For Each Sh In ActiveSheet.Shapes
               If Sh.Type = msoPicture Then Sh.Delete
           Next
       End If
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Verwende Debug.Print, um Variablenwerte in der Immediate-Window auszugeben, wenn Du Fehler in Deinem Code suchst.

  • Dokumentiere Deinen Code gut, um die Wartung zu erleichtern, besonders wenn Du oft mit verschiedenen Bildern und Pfaden arbeitest.


FAQ: Häufige Fragen

1. Was bedeutet Type=13 im VBA-Code? Type=13 steht für die Konstante msoPicture, die Pixelgrafiken in Excel repräsentiert. Mit dieser Abfrage kannst Du sicherstellen, dass nur Bilder gelöscht werden.

2. Wie kann ich sicherstellen, dass ein Bild vor dem Einfügen existiert? Du kannst die Funktion Dir verwenden, um zu überprüfen, ob die Datei im angegebenen Pfad vorhanden ist. Wenn Dir(BildDatei) <> "" ergibt, ist das Bild vorhanden.

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