ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   I know selected picture is a shape but typename says is picture (https://www.excelbanter.com/excel-programming/304918-i-know-selected-picture-shape-but-typename-says-picture.html)

Carlos Lozano

I know selected picture is a shape but typename says is picture
 
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

Stan Scott

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

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

Stan Scott
New York City

"Carlos Lozano" wrote in message
...
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




Norman Jones

I know selected picture is a shape but typename says is picture
 
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" wrote in message
...
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
oShape.left = oShape.left - 60
end if
End Sub

Thank you,

Carlos Lozano




Carlos Lozano

I know selected picture is a shape but typename says is pictur
 
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


"Norman Jones" wrote:

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" wrote in message
...
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
oShape.left = oShape.left - 60
end if
End Sub

Thank you,

Carlos Lozano






All times are GMT +1. The time now is 03:59 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com