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