Why does Excel think it's "Picture 7" instead of "Picture 1?"

C

crimsonkng

Here's a small portion of my macro:

Sheets("Result").Select
Rows("1:4").Select
Selection.Insert Shift:=xlDown
Range("E4").Select
ActiveSheet.Pictures.Insert("C:\v1logo.gif").Select
Selection.ShapeRange.IncrementLeft -12#
Selection.ShapeRange.IncrementTop -19.5
ActiveSheet.Shapes("Picture 1").Select
Selection.ShapeRange.IncrementLeft -20.25
Selection.ShapeRange.IncrementTop -0.75
Range("A1").Select

After years of using this, all of the sudden, I'm getting an error at the
8th line, above:
ActiveSheet.Shapes("Picture 1").Select

Excel can't find Picture 1 because, for some reason, the v1logo.gif file is
called Picture 7. Yesterday, Excel thought it was Picture 4. But for years
and years, it's been inserted as Picture 1 so there was never any problem.

I closed Excel and reopened it, thinking that it would think that it would
"reset" to Picture 1, but it didn't.

Any idea how to overcome this error? In the macro, can I call Picture "X"
instead of a specific Picture number? Or, can I say "whatever picture was
just inserted?"

Thanks.
 
D

Dave Peterson

Maybe you can just use a variable to represent the picture when you insert it.
Then you don't have to worry about its name:

Dim myPict As Picture
Set myPict = ActiveSheet.Pictures.Insert("C:\my pictures\hunter.jpg")

'delete any existing picture with that name????
On Error Resume Next
ActiveSheet.Pictures("Picture 1").Delete
On Error Resume Next

With myPict
'rename it???
.Name = "Picture 1"
With .ShapeRange
.IncrementLeft -12#
.IncrementTop -19.5
.IncrementLeft -20.25
.IncrementTop -0.75
End With
End With
 
C

crimsonkng

Worked perfectly. Thanks, Dave. Yer a pal.

Dave Peterson said:
Maybe you can just use a variable to represent the picture when you insert it.
Then you don't have to worry about its name:

Dim myPict As Picture
Set myPict = ActiveSheet.Pictures.Insert("C:\my pictures\hunter.jpg")

'delete any existing picture with that name????
On Error Resume Next
ActiveSheet.Pictures("Picture 1").Delete
On Error Resume Next

With myPict
'rename it???
.Name = "Picture 1"
With .ShapeRange
.IncrementLeft -12#
.IncrementTop -19.5
.IncrementLeft -20.25
.IncrementTop -0.75
End With
End With
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top