Private Sub Worksheet_Change(ByVal Target As Range)
Dim P&, Rc As Range, oPic As Picture
Set Target = Intersect(UsedRange.Columns(1), Target): If Target Is Nothing Then Exit Sub
With New Collection
For P = 1 To Sheet1.Pictures.Count: .Add P, Sheet1.Pictures(P).TopLeftCell.Cells(1, 0).Text: Next
For Each Rc In Target
For Each oPic In Pictures
If oPic.TopLeftCell.Address = Rc(1, 2).Address Then oPic.Delete: Exit For
Next
P = 0
On Error Resume Next
P = .Item(Rc.Text)
On Error GoTo 0
If P Then
Sheet1.Pictures(P).Copy
With Pictures.Paste
Shapes(.Name).LockAspectRatio = -1
If .Height > Rc.Height - 4 Then .Height = Rc.Height - 4
If .Width > Rc(1, 2).Width - 4 Then .Width = Rc(1, 2).Width - 4
.Left = Rc(1, 2).Left + (Rc(1, 2).Width - .Width) / 2
.Top = Rc.Top + (Rc.Height - .Height) / 2
End With
End If
Next
End With
Set oPic = Nothing
End Sub