Place a picture at copy

G

Guest

Trying to smoothly copy a range of cells as a picture and temporarily show it
on another sheet in the workbook.
Is it possible to place it at the time of copy? I have found two ways to
postition the image:
1: Select a cell before paste, upper left corner of picture will be placed
at cell. cumebersome since I want to center the image on an object in the
worksheet.


2: Paste the picture and afterwards set the top and the left of the picture.
This causes the image to jump on the sheet. Can use
Application.ScreenUpdating to hide the jump but then Excel flickers.
My code:
Private myPic As Excel.Picture
Range("rnTryCpy").Copy
Set myPic = Sheets("Blad1").Pictures.Paste

Place:
(before paste)
WorkSheets("Blad1").Range("p15").Select
or
(after paste)
myPic.Left = WorkSheets("Blad1").Range("p15").Left - myPic.Width / 2
myPic.Top = WorkSheets("Blad1").Range("p16").Top

It is not always range P15 I want to center to, in actual the center is
provided at the call to the function which do the copy.

Is there a way to specify the paste position other than those two?

And WHY is part of help in VBA-editor hidden? Hidden Language Element? Why?

Pls
 
G

Guest

Ok, just learned hidden elemenets are deprectade elements...
So instead I use Shape, I copy the range as a shape and pastes it to the
other sheet.

Thw bigg Q now is how do I adress the new shape. When pasting only
True/False is returned, no referens to the shape. How do I find the shape I
just pasted?
 
G

Guest

Just learned hidden language elements are deprecated elements... Instead of
picture I now use Shape. I copy the range as an image and pastes is as a
shape.

The only problem now is how do I find a reference to the new shape on the
sheet? Paste operation only returns True or False, no help there.

Yours
 
Z

zz

you could create a variable, let's say NewShapeName and assing it the value
of the name of your recently pasted shape

then when you need to use your shape's name you would do somethin like this

sheets("Blad1").shapes(NewShapeName).top= 300
 
G

Guest

Thanks for the reply.
The problem is to identify wich shape I have added to the sheet, I don't
know the name of the shape. How could I know the name?

I have found that that the last added shape is the last shape found in the
collection Shapes (quite logical), i.e.
Set myPic = Sheets("mySheet").Shapes(Sheets("mySheet").Shapes.Count))
sets myPic to the shape I have just added to the sheet.

But still - not the way I would like to go to find the shape, should be able
to adress it directly.

Placing the shape once I have a refernce to it is no problem.

And - sorry about the double post.

/T
 

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