I would recommend you step through the code and understand what each line and variable is doing. Many of your questions are answered in the code above. For example, the line where you 'Set Rng=...' is which cell the picture is going to be placed. Using my sample above, you would just pass the 'cell' variable in place of Rng.
However, there are still other issues, such as what happens if the person selects more pictures than there are cells in your range? Your code above loops for every file selected, but you will also need to loop through your selected range, and those may not match. How would you want to handle that?
Play with the code above and step through it. This is a rough change that will step through your selection, but without any real error checking:
xRowIndex = 1
For lLoop = LBound(PicList) To UBound(PicList)
Set Rng = selection(xRowIndex)
Set sShape = ActiveSheet.Shapes.AddPicture(PicList(lLoop), msoFalse, msoCTrue, Rng.Left, Rng.Top, Rng.Width, Rng.Height)
xRowIndex = xRowIndex + 1
Bookmarks