Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Bild einfügen oder löschen

Betrifft: Bild einfügen oder löschen von: Peer
Geschrieben am: 02.11.2020 07:45:43

Hallo.
Ich möchte meinem vorhandenen Code zum Einfügen eines Bildes mit einer MsgBox erweitern, um mit einer Abfrage, ob schon ein Bild vorhanden ist, dem User die Möglichkeit zu geben, entweder das vorhandene Bild zu löschen oder das vorhandene mit dem Öffnen Dialog zu ersetzen. Wenn kein Bild vorhanden ist, dann soll ganz normal der Öffnen Dialog aufgerufen werden.
Das Bild beginnt in Zelle E45 und über den Bereich bis G49 eingefügt.

Bis jetzt habe ich folgenden VBA Code...

Sub BildLaden()

'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
       
    'Öffnen Dialog zum Auswählen der Grafik
    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wähle deine  _
erstellte Unterschrift aus !")

    'wenn keine Grafik vorhanden, dann...
    If sPicture <> "False" And sPicture <> "Falsch" Then
        
    ActiveSheet.Unprotect Password:=""

    'Variante 1: wenn 1 Bild enthalten ist, dann dieses löschen

    'Variante 2: prüfen, ob sich bereits eine Bild im Blatt befindet, dessen Zelladresse der  _
linken oberen Ecke mit D45 übereinstimmt,
    'falls noch weiter Bilder eingefüget werden sollen
    
'        For Each shaShape In ActiveSheet.Shapes
'        If shaShape.TopLeftCell.Address = "$E$45" Then
'            shaShape.Delete
'            Exit For
'        End If
'        Next shaShape
'
'        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, LinkToFile:=msoFalse,  _
_
'            SaveWithDocument:=msoTrue, Left:=Columns(5).Left, Top:=Rows(45).Top, _
'            Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
'        shaShape.Placement = xlMoveAndSize
        

    Set pic = ActiveSheet.Shapes.AddPicture(sPicture, msoFalse, msoTrue, Cells(45, 5).Left,  _
Cells(49, 7), 50, 30)
    Set pic = ActiveSheet.Pictures.Insert(sPicture)
    
    If ActiveSheet.Pictures.Count > 0 Then
            If MsgBox("Aktuelles Bild löschen?", vbCritical + vbYesNo, "Bild löschen") = vbYes  _
Then
                ActiveSheet.Pictures(ActiveSheet.Pictures.Count).Delete
                Exit Sub
            Else
                With pic
                    .ShapeRange.LockAspectRatio = msoTrue
                    .Height = Range("E45:G49").Height
                    .Width = Range("E45:G49").Width
                    .Top = Range("E45:G49").Top
                    .Left = Range("E45:G9").Left
                    .Placement = xlMoveAndSize
                End With

    
    ActiveSheet.Protect Password:=""
    Set pic = Nothing
            End If
    End If
    
    End If
End Sub

Kann mir jemand helfen auf die richtig Spur zu kommen? Ich habe schon einiges ausprobiert, konnte aber keine vernünftige Lösung finden. Oben genannter Code ist mein bisher letzter Versuch.

Vielen Dank für eure Hilfe.

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 02.11.2020 14:47:55

Hallo.
Ich war nicht untätig und suchte weiter nach einer Lösung.
Sub BildLaden()

'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
       
    'Öffnen Dialog zum Auswählen der Grafik
    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wähle deine  _
erstellte Unterschrift aus !")

    'wenn keine Grafik vorhanden, dann...
    If sPicture <> "False" And sPicture <> "Falsch" Then
        
    ActiveSheet.Unprotect Password:=""
    
        For Each shaShape In ActiveSheet.Shapes
        If shaShape.TopLeftCell.Address = "$E$45" Then
            shaShape.Delete
            Exit For
        End If
        Next shaShape

        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, LinkToFile:=msoFalse,  _
_
            SaveWithDocument:=msoTrue, Left:=Columns(5).Left, Top:=Rows(45).Top, _
            Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
        shaShape.Placement = xlMoveAndSize


    Else
        If MsgBox("Bild löschen?", vbQuestion + vbYesNo, "Unterschrift löschen") = vbYes Then

                ActiveSheet.Shapes(shaShape).Delete

        End If
    
       ActiveSheet.Protect Password:=""

    End If
aber der Debugger bemängelt das Löschen von shaShape.
Wo ist/sind mein(e) Gedankenfehler?

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 02.11.2020 18:53:41

Hi Peer,

da deine Schleife über die Shapes im If-Zweig steht, ist die Variable shaShape nicht belegt - deshalb der Fehler.

Die Abfrage zum Löschen und Einfügen des Bildes musst du innerhalb der Schleife platzieren (wenn ich dein Anliegen richtig verstanden habe).
Sub BildLaden()

'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
       
    'Öffnen Dialog zum Auswählen der Grafik
    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wähle deine  _
erstellte Unterschrift aus !")

    'wenn keine Grafik vorhanden, dann...
    If sPicture <> "False" And sPicture <> "Falsch" Then
        ActiveSheet.Unprotect Password:=""
        For Each shaShape In ActiveSheet.Shapes
            If shaShape.TopLeftCell.Address = "$E$45" Then
                If MsgBox("Bild löschen?", vbQuestion + vbYesNo, "Unterschrift löschen") =  _
vbYes Then
                    shaShape.Delete
                    Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                        LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                        Left:=Columns(5).Left, Top:=Rows(45).Top, _
                        Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
                    shaShape.Placement = xlMoveAndSize
                End If
                Exit For
            End If
        Next shaShape
        ActiveSheet.Protect Password:=""
    End If
End Sub

GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 02.11.2020 19:37:41

Hallo Beverly.
Vielen Dank für deine Info und Hilfe.

Du hast es (fast) richtig verstanden.

Eigentlich möchte ich die Abfrage (MsgBox) beim Aufrufen der Sub, die prüft, ob schon ein Bild vorhanden ist und dann dem User die Möglichkeit gibt, das Bild komplett zu löschen (vbYes) oder das vorhandene Bild mit dem Öffnen-Dialog ersetzt.

Ich hoffe, ich konnte es jetzt besser erläutern.

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 02.11.2020 22:27:42

Hi Peer,

so müsste es meiner Meinung nach funktionieren:
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnLoeschen As Boolean
    ActiveSheet.Unprotect Password:=""
    If ActiveSheet.Shapes.Count > 0 Then
        For Each shaShape In ActiveSheet.Shapes
            If shaShape.TopLeftCell.Address = "$E$45" Then
                ' Abfrage ob löschen: Ja
                If MsgBox("Bild löschen?", vbQuestion + vbYesNo, "Unterschrift löschen") =  _
vbYes Then
                    ' Bild löschen
                    shaShape.Delete
                Else
                    ' vorhandenes Bild muss später gelöscht werden wenn neues eingefügt wird
                    blnLoeschen = True
                End If
                Exit For
            End If
        Next shaShape
    End If
    ' Bild aussuchen
    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wähle deine  _
erstellte Unterschrift aus !")
    If sPicture <> "False" And sPicture <> "Falsch" Then
        ' vorhandenes Bild löschen da es ersetzt werden soll
        If blnLoeschen Then shaShape.Delete
        ' neues Bild einfügen
        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
            LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
            Left:=Columns(5).Left, Top:=Rows(45).Top, _
            Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
        shaShape.Placement = xlMoveAndSize
    End If
    ActiveSheet.Protect Password:=""
End Sub

GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 03.11.2020 12:57:32

Hallo Beverly.

Auch hierfür nochmals vielen Dank für deine Hilfe.
Jetzt ist es so...
Wenn ein Bild vorhanden ist, kommt die MsgBox. Wenn ich jetzt auf Löschen Ja klicke, öffnet sich der Öffnen-Dialog trotzdem und das Bild wird erstmal nicht entfernt. Nachdem ich den Öffnen-Dialog mit "Abbrechen" schließe, wird erst jetzt das Bild gelöscht. Wenn kein Bild vorhanden ist, dann wird der Öffnen-Dialog gleich geöffnet.

Ich möchte aber gern, dass bei MsgBox auf Ja geklickt, das Bild gelöscht wird, ohne den Dialog zu öffnen.
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnLoeschen As Boolean
    
    ActiveSheet.Unprotect Password:=""
    
    If ActiveSheet.Shapes.Count > 0 Then
        For Each shaShape In ActiveSheet.Shapes
            If shaShape.TopLeftCell.Address = "$E$45" Then
                ' Abfrage ob löschen: Ja
                If MsgBox("Bild löschen?", vbQuestion + vbYesNo, "Unterschrift löschen") =  _
vbYes Then
                    ' Bild löschen
                    shaShape.Delete

                Else
                    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wä _
hle deine erstellte Unterschrift aus !")
                    If sPicture <> "False" And sPicture <> "Falsch" Then
                        ' vorhandenes Bild löschen da es ersetzt werden soll
                        If blnLoeschen Then shaShape.Delete
                        ' neues Bild einfügen
                        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                            LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                            Left:=Columns(5).Left, Top:=Rows(45).Top, _
                            Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
                        shaShape.Placement = xlMoveAndSize
                        End If
                    End If
                Exit For
                End If
            
                
            End If
        Next shaShape
    Else:
        sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , "Wähle deine  _
erstellte Unterschrift aus !")
        If sPicture <> "False" And sPicture <> "Falsch" Then
            ' vorhandenes Bild löschen da es ersetzt werden soll
            If blnLoeschen Then shaShape.Delete
            ' neues Bild einfügen
            Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=Columns(5).Left, Top:=Rows(45).Top, _
                Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
            shaShape.Placement = xlMoveAndSize
            End If
        End If
    ' Bild aussuchen
    
    End If
    ActiveSheet.Protect Password:=""
End Sub

Ich scheitere dabei an der End If Anweisung. Was übersehe ich?
Ich kann den Fehler nicht finden. Gibt es vielleicht eine einfachere Lösung?

Gruß
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 03.11.2020 15:47:04

Hi Peer,

das ist nicht mein Code. Ich war davon ausgegangen, dass nach dem Löschen des Bildes trotzdem die Möglichkeit bestehen soll, ein neues einzufügen oder eben nicht. Das ist doch der logische Weg.

Wie hast du dir das denn gedacht: wenn das Bild gelöscht wird ohne ein neues einzufügen soll dann erst beim nächsten Makrodurchlauf die Möglichkeit bestehen, ein Bild einzufügen? Was macht das für einen Sinn?


GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 03.11.2020 18:56:26

Hallo Beverly.

Das ist wirklich (nicht ganz) dein Code. Ich habe zwar deine Zeilen benutzt, aber versucht sie anderes anzuordnen, um folgendes zu bewerkstelligen.
Der User soll die Möglichkeit bekommen, das vorhandene Bild zu löschen ohne gleich ein neues einzufügen. Ebenso soll bei fehlenden Bild (auch nach dem Löschen des Bildes) über den Öffnen Dialog ein neues Bild auswählbar sein.
Also kein Bild vorhanden, ohne MsgBox der Öffnen Dialog starten; Bild vorhanden, dann die Auswahl über MsgBox, ob das vorhandene gelöscht werden soll oder nicht. Wenn ja, das Bild löschen und Sub beenden, wenn nein, Öffnen Dialog, um ein anderes Bild auszuwählen.

Das sind meine Vorstellungen. Ich habe keine Ahnung, wie man es sonst lösen könnte. Oder denke ich zu umständlich... ist nicht das erste Mal ;-)

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 03.11.2020 22:44:27

Hi Peer,

leider kenne ich deine mappe nicht, deshalb bin ich jetzt davon ausgegangen, dass außer dem 1 Bild keine weiteren Shapes im Tabellenblatt vorhanden sind:
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnLoeschen As Boolean
'    ActiveSheet.Unprotect Password:=""
    If ActiveSheet.Shapes.Count > 0 Then
        For Each shaShape In ActiveSheet.Shapes
            If shaShape.TopLeftCell.Address = "$E$45" Then
                ' Abfrage ob löschen: Ja
                If MsgBox("Bild löschen?", vbQuestion + vbYesNo, _
                    "Unterschrift löschen") = vbYes Then
                    ' Bild löschen
                    shaShape.Delete
                Else
                    ' Bild aussuchen
                    sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , _
                        "Wähle deine erstellte Unterschrift aus !")
                    If sPicture <> "False" And sPicture <> "Falsch" Then
                        ' Bild löschen
                        shaShape.Delete
                        ' neues Bild einfügen
                        Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                            LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                            Left:=Columns(5).Left, Top:=Rows(45).Top, _
                            Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
                        shaShape.Placement = xlMoveAndSize
                    End If
                End If
                Exit For
            End If
        Next shaShape
    Else
        ' Bild aussuchen
        sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , _
            "Wähle deine erstellte Unterschrift aus !")
        If sPicture <> "False" And sPicture <> "Falsch" Then
            ' neues Bild einfügen
            Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=Columns(5).Left, Top:=Rows(45).Top, _
                Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
            shaShape.Placement = xlMoveAndSize
        End If
    End If
'    ActiveSheet.Protect Password:=""
End Sub

GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 04.11.2020 19:05:41

Hallo Beverly.

Ich habe deinen Code mit meinem Code verglichen und nachvollziehbar verstanden, was bei mir nicht passen konnte. Trotzdem habe ich deinen Code komplett genommen und eingefügt. Und er startet mit einem Fehler bei der shaShape-Variable. Das verstehe ich nun nicht mehr, denn die Variable ist deklariert und zugeordnet.

Ich hänge die sehr abgespeckte Datei an und hoffe, du kannst mir helfen, den Grund zu verstehen, Beverly.
https://www.herber.de/bbs/user/141316.xlsm
Und abermals danke ich dir im Voraus für deine Unterstützung.

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 04.11.2020 20:12:32

Hi Peer,

du hast Gültigkeitszellen in deiner Tabelle, die einen DropDown-Pfeil haben. Dieser wird ebenfalls als Shape erkannt aber besitzt die Eigenschaft TopLeftCell nicht - deshalb der Fehler. Ich habe mal versucht, das zu umgehen:
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnVorhanden As Boolean
    Dim blnLoeschen As Boolean
    ActiveSheet.Unprotect Password:=""
    For Each shaShape In ActiveSheet.Shapes
        On Error GoTo ErrorHandler
        If Not IsError(shaShape.TopLeftCell.Address) Then
            If shaShape.TopLeftCell.Address = "$E$45" Then
                blnVorhanden = True
                Exit For
            End If
        End If
ErrorHandler:
        On Error GoTo 0
    Next shaShape
    If blnVorhanden Then
        ' Abfrage ob löschen: Ja
        If MsgBox("Bild löschen?", vbQuestion + vbYesNo, _
            "Unterschrift löschen") = vbYes Then
            ' Bild löschen
            shaShape.Delete
            Exit Sub
        Else
            blnLoeschen = True
        End If
    End If
    If blnVorhanden = False Then
        ' Bild war vorhanden deshalb löschen
        If blnLoeschen Then shaShape.Delete
        ' Bild aussuchen
        sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , _
            "Wähle deine erstellte Unterschrift aus !")
        If sPicture <> "False" And sPicture <> "Falsch" Then
            ' neues Bild einfügen
            Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=Columns(5).Left, Top:=Rows(45).Top, _
                Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
            shaShape.Placement = xlMoveAndSize
        End If
    End If
    ActiveSheet.Protect Password:=""
End Sub

GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 04.11.2020 20:37:24

Super, Beverly.
Kann man das Shape nicht direkt ansprechen? Mit einem Index habe ich es schon einmal gelesen, aber direkt mit Namen?

Ich habe im Code noch eine Zeile einfügen müssen, damit bei Auswahl mit "Nein" in der MsgBox auch der Öffnen-Dialog startet.
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnVorhanden As Boolean
    Dim blnLoeschen As Boolean
    ActiveSheet.Unprotect Password:=""
    For Each shaShape In ActiveSheet.Shapes
        On Error GoTo ErrorHandler
        If Not IsError(shaShape.TopLeftCell.Address) Then
            If shaShape.TopLeftCell.Address = "$E$45" Then
                blnVorhanden = True
                Exit For
            End If
        End If
ErrorHandler:
        On Error GoTo 0
    Next shaShape
    If blnVorhanden Then
        ' Abfrage ob löschen: Ja
        If MsgBox("Bild löschen?", vbQuestion + vbYesNo, _
            "Unterschrift löschen") = vbYes Then
            ' Bild löschen
            shaShape.Delete
            Exit Sub
        Else
            blnLoeschen = True
            blnVorhanden = False
        End If
    End If
    If blnVorhanden = False Then
        ' Bild war vorhanden deshalb löschen
        If blnLoeschen Then shaShape.Delete
        ' Bild aussuchen
        sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , _
            "Wähle deine erstellte Unterschrift aus !")
        If sPicture <> "False" And sPicture <> "Falsch" Then
            ' neues Bild einfügen
            Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=Columns(5).Left, Top:=Rows(45).Top, _
                Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
            shaShape.Placement = xlMoveAndSize
        End If
    End If
    ActiveSheet.Protect Password:=""
End Sub
Mit besten Gruß
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 04.11.2020 22:02:25

Hi Peer,

nun also doch anders: wenn das Bild vorhanden ist und auf Löschen "Nein" geantwortet wurde sofort den Dialog zum Einfügen eines neuen Bildes aufrufen? So hatte ich den Code doch bereits einmal und genau das wolltest du doch nicht...


GrußformelBeverly's Excel - Inn

Betrifft: AW: Bild einfügen oder löschen
von: Peer
Geschrieben am: 05.11.2020 07:11:51

Guten Morgen, Beverly.



Da haben wir uns wahrscheinlich missverstanden. Es tut mir leid, wenn ich mich nicht richtig

ausgedrückt habe. Folgendes hatte ich es ein paar Posts vorher beschrieben.
Also kein Bild vorhanden, ohne MsgBox der Öffnen Dialog starten;
Bild vorhanden, dann die Auswahl über MsgBox,
ob das vorhandene gelöscht werden soll oder nicht. 
Wenn ja, das Bild löschen und Sub beenden,
wenn nein, Öffnen Dialog, um ein anderes Bild auszuwählen.
Wie kann ich die Shapes direkt ansprechen, wenn mehrere vorhanden sind?

LG
Peer

Betrifft: AW: Bild einfügen oder löschen
von: Beverly
Geschrieben am: 05.11.2020 07:46:55

Hi Peer,

ich bin jetzt von folgender Annahme ausgegangen: wenn Bild vorhanden und beim Dialog für anderes Bild keins ausgewählt wird bleibt das vorhandenes Bild in der Mappe:
Sub BildLaden()
'mit Unterstützung von Beverly aus www.herber.de
    Dim sPicture As String, pic As Picture, shaShape As Shape
    Dim blnVorhanden As Boolean
    Dim blnLoeschen As Boolean
    ActiveSheet.Unprotect Password:=""
    For Each shaShape In ActiveSheet.Shapes
        If shaShape.name = "Unterschrift" Then
            blnVorhanden = True
            Exit For
        End If
    Next shaShape
    If blnVorhanden Then
        ' Abfrage ob löschen: Ja
        If MsgBox("Bild löschen?", vbQuestion + vbYesNo, _
            "Unterschrift löschen") = vbYes Then
            ' Bild löschen
            shaShape.Delete
            Exit Sub
        Else
            blnLoeschen = True
            blnVorhanden = False
        End If
    End If
    If blnVorhanden = False Then
        sPicture = Application.GetOpenFilename("Grafik laden (*.png), *.png", , _
            "Wähle deine erstellte Unterschrift aus !")
        If sPicture <> "False" And sPicture <> "Falsch" Then
            If blnLoeschen Then ActiveSheet.Shapes("Unterschrift").Delete
            ' neues Bild einfügen
            Set shaShape = ActiveSheet.Shapes.AddPicture(Filename:=sPicture, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=Columns(5).Left, Top:=Rows(45).Top, _
                Width:=Columns("E:G").Width, Height:=Rows("45:49").Height)
            shaShape.Placement = xlMoveAndSize
            shaShape.name = "Unterschrift"
        End If
    End If
    ActiveSheet.Protect Password:=""
End Sub
Shapes kann man mit dem Namen ansprechen - wenn man das zielgerichtet tun will weist man ihm beim Erstellen den Namen (im obigen Code "Unterschrift") zu.


GrußformelBeverly's Excel - Inn

Betrifft: Vielen Dank, Beverly, für deine Hilfe (owT)
von: Peer
Geschrieben am: 05.11.2020 13:21:45

""

Beiträge aus dem Excel-Forum zum Thema "Bild einfügen oder löschen"