From what I understand of your question, you're missing a key piece: Ranges have properties like Left, Top, Right, and Width just like images do. Here's a function that takes in a Range
object as a parameter, prompts the user to select images, and then fits the images into that range. Key Point: Based on your request, it is written so that aspect ratio is not maintained so pictures may appear squashed or stretched.
Option Explicit Sub testImportPicturesToRange() ImportPicturesToRange Range("B3:H10") End Sub Function ImportPicturesToRange(rngTarget As Range) 'Declaration Dim picFormats As String, picPaths, picPath, pic Dim i As Long, numPics As Long, picWidth As Long 'Select the pictures to import picFormats = "*.gif; *.jpg; *.bmp; *.png; *.tif" picPaths = Application.GetOpenFilename("Pictures (" & picFormats & ")," & picFormats,, "Select Picture to Import",, True) 'Exit if user clicked Cancel If TypeName(picPaths) = "Boolean" Then Exit Function 'Initialize i = 0 numPics = 0 For Each picPath In picPaths If picPath <> False Then numPics = numPics + 1 Next picWidth = rngTarget.Width / numPics 'Import the pictures On Error Resume Next For Each picPath In picPaths If picPath <> False Then Set pic = ActiveSheet.Pictures.Insert(picPath) pic.ShapeRange.LockAspectRatio = msoFalse pic.Top = rngTarget.Top pic.Left = rngTarget.Left + (i * picWidth) pic.Height = rngTarget.Height pic.Width = picWidth i = i + 1 End If Next 'Cleanup Set pic = Nothing Set picPath = Nothing Set picPaths = Nothing End Function
UPDATE: From what I can see in your question, I think this is how you would want to implement it.
Private Sub Image1_Click() ImportPicturesToRange Range("C1") End Sub