I know selected picture is a shape but typename says is picture

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi,

I am trying to move a shape that is selected to the left. Have the below code:

Sub Test()
Dim oSheet as workhseet
Dim oShape as Shape
Dim oObj as Object ' I don't know if the shape or something else is selected, so I get the object selected.
set oSheet = Application.ActiveSheet
oObj = Application.Selection
if TypetName(oObj) = "Picture" then
' Shape selected
set oShape = oObj ' Try to convert to oShape to access its properties. I get an error type mismatch here
oShape.left = oShape.left - 60
end if
End Sub

Thank you,

Carlos Lozano
 
Carlos,

Did you copy this routine exactly? If so, you have a typo here:
"TypetName"

Stan Scott
New York City

Carlos Lozano said:
Hi,

I am trying to move a shape that is selected to the left. Have the below code:

Sub Test()
Dim oSheet as workhseet
Dim oShape as Shape
Dim oObj as Object ' I don't know if the shape or something else is
selected, so I get the object selected.
set oSheet = Application.ActiveSheet
oObj = Application.Selection
if TypetName(oObj) = "Picture" then
' Shape selected
set oShape = oObj ' Try to convert to oShape to access its
properties. I get an error type mismatch here
 
Hi Carlos,

In addition to the typo pointed out by Stan,
Dim oSheet as workhseet

should be

Dim oSheet as Worksheet

This version of your code worked for me:

Sub Test()
Dim oSheet As Worksheet
Dim oObj As Picture

Set oSheet = ActiveSheet
Set oObj = Selection
oObj.Left = oObj.Left - 60

End Sub

This version, where I move and resize the picture, also worked for me:
Sub Test2()
Dim oSheet As Worksheet
Dim oObj As ShapeRange

Set oSheet = ActiveSheet
Set oObj = Selection.ShapeRange
oObj.IncrementLeft 147.75
oObj.IncrementTop 11.25
oObj.ScaleWidth 0.9, msoFalse, msoScaleFromTopLeft
oObj.ScaleHeight 0.9, msoFalse, msoScaleFromTopLeft

End Sub


---
Regards,
Norman



Carlos Lozano said:
Hi,

I am trying to move a shape that is selected to the left. Have the below code:

Sub Test()> Dim oShape as Shape
Dim oObj as Object ' I don't know if the shape or something else is
selected, so I get the object selected.
set oSheet = Application.ActiveSheet
oObj = Application.Selection
if TypetName(oObj) = "Picture" then
' Shape selected
set oShape = oObj ' Try to convert to oShape to access its
properties. I get an error type mismatch here
 
Thank you Norman and Stan.

The typos are only in the posting, not in thereal code.

What helped me was the line:

Dim oObj as Object
Dim oImage as Picture
Set oImage = oOBj ' THIS IS VALID, Hurray!

This definition allows to convert the object to Image, so I was albe to access all its properties with no doubt about it and avoiding the trial and error time. I really needed the conversion as I don't know if the user selected a picture, cell, etc, I was not able to set it as Picture at the begining as it would crash if something else was selected.

Thank you,

Carlos Lozano
 

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

Back
Top