Yes to all your questions, but the code posted will only work if your pictures are files in a folder. You only need to change the Folder - Path then the trigger cell location and then play with the picture size and display location in the code.
Here is a way to do the same only with hard-coded pictures, where the displayed names are different than the file names:
Private Sub Worksheet_Change(ByVal Target As Range)
'Sheet Module code, like: Sheet1.
Dim myFlgSel$, myFlgFile$
'Get selected flags name only.
If Target.Address <> "$E$10" Then Exit Sub
myFlgSel = Range("E10").Value
'Test for no name found!
On Error GoTo myErr1
'Load active flags name.
myFlgFile = Range("F10").Value
'Remove current flag from sheet.
ActiveSheet.Shapes(myFlgFile).Select
Selection.Cut
myErr1:
'Use selected name to load file name.
Select Case myFlgSel
Case "United States of America"
myFlgFile = "us-s"
Case "China"
myFlgFile = "ch"
Case "Poland"
myFlgFile = "poland"
Case "United Kingdom"
myFlgFile = "uk"
Case "England"
myFlgFile = "england"
Case Else
Exit Sub
End Select
'Load selected flag file to sheet.
ActiveSheet.Pictures.Insert("U:\Excel\Test\" & myFlgFile & ".gif").Select
Selection.Name = myFlgFile
Range("F10").Value = myFlgFile
Selection.ShapeRange.ScaleWidth 0.35, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.35, msoFalse, msoScaleFromTopLeft
Application.CommandBars("Picture").Visible = False
ActiveSheet.Shapes(myFlgFile).Select
Selection.ShapeRange.IncrementLeft 2#
Selection.ShapeRange.IncrementTop 16#
Range("A1").Select
End Sub
And, this is a way to make a picture fit the dimentions of a cell:
Sub AddPictureToCell()
'Standard module code, like: Module1.
Dim cell As Object
Dim ws As Worksheet
Dim myRange As Range
Dim myPhotos As ShapeRange
Application.ScreenUpdating = False
Set ws = Worksheets("Sheet1")
Set myRng = ws.Range("B2:B12")
On Error GoTo noPics
Set myPhotos = ws.Pictures.ShapeRange
If myPhotos.Count > 0 Then myPhotos.Delete
noPics:
For Each cell In myRng
cell.ColumnWidth = 7
cell.RowHeight = 30
If cell.Offset(0, 1).Value > 7 Then ws.Pictures.Insert("U:\Excel\Test\aPhoto2.jpg").Select
If cell.Offset(0, 1).Value < 7 Then ws.Pictures.Insert("U:\Excel\Test\aPhoto.jpg").Select
With Selection
.Top = cell.Top
.Left = cell.Left
.Width = cell.Width
.Height = cell.Height
.Placement = xlMoveAndSize
.PrintObject = True
End With
Next cell
Application.ScreenUpdating = True
ActiveSheet.Range("B1").Select
End Sub